簡體   English   中英

獲取python中每個2個字母的單詞的第一個字母

[英]Get the first letter of each 2-letter word in python

我有以下代碼:

hand=["TS","AD"]
test=['--23456789TJQKA'.index(a) for a, b in hand]
print (test)

結果是:

[10, 14]

該代碼段如何工作? 它是[用於列表中的a,b的a]的內置函數,以獲取python中列表中每個2個字母的單詞的第一個字母嗎?

這是一種普通的列表理解,它會將手中的兩個字母字符串拆分為字母元組

對於第一手要素:

a, b in 'TS'
# a == 'T'
# b == 'S'

'--23456789TJQKA'.index('T')
# 10

對於第二個要素:

a, b in 'AD'
# a == 'A'
# b == 'D'

'--23456789TJQKA'.index('A')
# 14

首先,讓我們將代碼轉換為for循環:

hand = ["TS","AD"]
test = []
for a,b in hand:
    test.append('--23456789TJQKA'.index(a))
# note that we didn't use b

print(test)

那么這是怎么回事?
好吧, hand每個元素都是兩個元素的迭代。 這意味着, for a,b in hand遍歷每個串hand ,分配第一個字符到a和第二至b 這實際上與以下內容相同:

for mystr in hand:
    a = mystr[0]
    b = mystr[1]
    # or equivalently, a,b = mystr

下一塊是'--23456789TJQKA'.index(a) ,其簡單地返回的第一次出現的索引a字符串'--23456789TJQKA'

因此,輸出最終是兩個數字的列表- hand每個字符串的第一個字符的索引,即'T''A'

在這里, for a, b in hand部分實際上解壓縮了字符串TSAD 循環變量ab被分配給hand元素。 就像

(a, b) = 'TS'

在這里,a分配給T ,b設置為S

之后,該.index方法僅查找a並返回其索引。

注意:如果hand包含非兩個字母的單詞,此功能將無效。

該代碼與使用標准52卡座的撲克牌或其他紙牌游戲有關。 test將是玩家手的順序“等級”列表(“套裝”未保存)。 它使用元組拆包在列表推導中將手的“等級”放入a ,將“西裝”放入b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM