我正在嘗試為保存在數組中的每個記錄提取記錄中的第一個數字(wins-losses-ties)。例如:該數組可能如下:[2-2-3, 4-5-2, 1-3-8]??紤]到我想提取獲勝次數的所有值并將它們分配給一個新數組,我希望最終得到的數組是以下 [2, 4, 1]。我怎么能在我的 python 代碼中做到這一點?
2 回答

德瑪西亞99
TA貢獻1770條經驗 獲得超3個贊
result = next(zip(*[(2,2,3), (4,5,2), (1,3,8)]))
或者,如果記錄實際上是字符串:
result = next(zip(*(data.split('-') for data in ['2-2-3', '4-5-2', '1-3-8'])))
解釋:
>>> list(zip(*[(2,2,3), (4,5,2), (1,3,8)])) [(2, 4, 1), (2, 5, 3), (3, 2, 8)]
你想得到第一個元素,所以你可以這樣做list(zip(*[(2,2,3), (4,5,2), (1,3,8)]))[0]
,但這不是必需的,因為zip
它是即時構造它的返回值,并且不會一次計算所有它們(所以它不會浪費內存),所以你可以讓它生成并只返回第一個值next(zip(...))
。

收到一只叮咚
TA貢獻1821條經驗 獲得超5個贊
嘗試這個:
arr = ['2-2-3', '4-5-2', '1-3-8']
result = [s.split('-')[0] for s in arr]
解釋:
[s for s in arr]
# output: ['2-2-3', '4-5-2', '1-3-8']
[s.split('-') for s in arr]
# output: [['2', '2', '3'], ['4', '5', '2'], ['1', '3', '8']]
[s.split('-')[0] for s in arr]
# output: ['2', '4', '1']
添加回答
舉報
0/150
提交
取消