我收到了以下代码。
hand = '6C 7C 8C 9C TC'.split()
所以hand现在是一个字符串列表['6C', '7C', '8C', '9C', 'TC']
然后
ranks = ["--23456789TJKA".index(r) for r, s in hand]
排名现在为[6, 7, 8, 9, 10]
目的是将卡的等级设为适当的数值,以便对其进行排序: 即'T' - > 10,'J' - > 11,'Q'-12,'K' - > 13和'A' - > 14。
我不明白为什么会有效!
list[item]
"string"[0]
我没有在排行榜列表中看到它。
谢谢!
答案 0 :(得分:1)
hand的每个元素都是一个包含两个字符的字符串。
在形成ranks
时,您正在做的是hand
的每个元素,将字符串解压缩为两个单独的变量。
因此,在变量r
中,您将获得
6 7 8 9 T ...
而且,在变量s
中,您将得到:
C C C C C ....
让我们看看这个。
[(r,s) for r, s in hand]
输出:
[('6', 'C'), ('7', 'C'), ('8', 'C'), ('9', 'C'), ('T', 'C')]
您正在构建列表ranks
,其中包含字符串r
中每个--23456789TJKA
的索引
让我们看看它是如何工作的:
>>"--23456789TJKA".index('6')
>> 6
>>"--23456789TJKA".index('7')
>> 7
>>"--23456789TJKA".index('8')
>> 8
等等!
答案 1 :(得分:0)
检查[(r,s) for r, s in hand]
给你的内容。这是
[('6', 'C'), ('7', 'C'), ('8', 'C'), ('9', 'C'), ('T', 'C')]
这是因为您将2个字母的字符串解压缩到r
和s
(每个字符串都是可迭代的)。
所以当你index(r)
时,你只是在搜索第一个字符的索引。
答案 2 :(得分:0)
字符串,如列表,可以迭代。例如:
>>> for s in 'string':
... print s
...
s
t
r
i
n
g
因此,当你正在做for r, s in hand
时,它确实:
r = '6'
s = 'C'
对于每个项目(显然每个项目的值不同)
答案 3 :(得分:0)
您从以下开始:
>>> hand = ['6C', '7C', '8C', '9C', 'TC']
请考虑一下当你这样做时会发生什么:
>>> [(r, s) for r, s in hand]
[('6', 'C'), ('7', 'C'), ('8', 'C'), ('9', 'C'), ('T', 'C')]
for r, s in hand
位将每个两个 - 字符长字符串拆分为r
和s
,然后将它们放在一个元组中。您的代码有点不同,因为它没有将它们放入元组中,它只使用r
作为index
函数的参数。