python - 使用混合的 int 和字符串对列表进行排序
问题描述
我正在尝试编写一些 tombala 游戏。这是我的代码。
self.player1_cards = [
[random.randint(1, 91), '', random.randint(1, 91), '', random.randint(1, 91), '',
random.randint(1, 91), '', random.randint(1, 91), random.randint(1, 91), ''],
[random.randint(1, 91), random.randint(1, 91), '', random.randint(1, 91), '',
random.randint(1, 91), '', random.randint(1, 91), random.randint(1, 91)],
[random.randint(1, 91), '', random.randint(1, 91), '', random.randint(1, 91),
'', random.randint(1, 91), '', random.randint(1, 91)]
]
self.player2_cards = [
[random.randint(1, 91), '', random.randint(1, 91), '', random.randint(1, 91), '',
random.randint(1, 91), '', random.randint(1, 91), random.randint(1, 91), ''],
[random.randint(1, 91), random.randint(1, 91), '', random.randint(1, 91), '',
random.randint(1, 91), '', random.randint(1, 91), random.randint(1, 91)],
[random.randint(1, 91), '', random.randint(1, 91), '', random.randint(1, 91),
'', random.randint(1, 91), '', random.randint(1, 91)]
]
我正在创建这样的用户卡。之后,我尝试对所有整数进行升序排序。但是,当我尝试这样做时:
for i in range(0, 3):
self.player1_cards[i].sort()
self.player2_cards[i].sort()
print("Player1:\n", self.player1_cards,
"\nPlayer 2:\n", self.player2_cards)
我收到这样的错误:
self.player1_cards[i].sort()
TypeError: '<' not supported between instances of 'str' and 'int'
我理解为什么会发生这种情况,但我不知道如何对这个列表进行排序。你能帮我么?
解决方案
使用您的代码为第一行创建示例行:
>>> import random
>>> row = [random.randint(1, 91), '', random.randint(1, 91), '', random.randint(1, 91), '',
random.randint(1, 91), '', random.randint(1, 91), random.randint(1, 91), '']
>>> row
[79, '', 78, '', 57, '', 54, '', 84, 26, '']
提取和排序数字,然后在数字位置使用它们:
>>> ordered = iter(sorted(x for x in row if x != ''))
>>> [next(ordered) if x != '' else '' for x in row]
[26, '', 54, '', 57, '', 78, '', 79, 84, '']
但是,与其将其构建为未排序的、将其拆开并重新构建为排序的,不如先将其构建为排序的更简单。
推荐阅读
- javascript - D3.js 仪表图表指标和标签定位
- r - 使用 match() 函数和 rename_all() R
- r - 改进 R 中不带逗号的函数输入
- php - php DOMDocument()->getAttribute() 不工作
- .net - 如果在异步调用中调用阻塞方法会发生什么?
- ios - 我想线程化从 iOS 中的领域读取的数据
- linux - Elasticsearch 集群未显示
- python - 从熊猫日期时间列中提取年份作为数值,用 NaN 表示空单元格而不是 NaT
- python - 在循环中将从字符串转换为浮点数的数字列表相乘(Python)时遇到问题
- python - 有没有办法在不涉及任何内容的情况下在谷歌中输入 python 类型?