拉取位于数组中的多个字符串的特定部分。

时间:2018-12-11 21:23:47

标签: python arrays string

我试图为保留在数组中的每个记录提取记录中的第一个数字(wins-loss-tie)。例如:

该数组可以是以下数组:[2-2-3、4-5-2、1-3-8]。

考虑到我想提取所有获胜数的值并将它们分配给一个新的数组,我希望最终得到的数组如下[2,4,1]。

我该如何在我的python代码中执行此操作?

谢谢。

2 个答案:

答案 0 :(得分:2)

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(...))返回 第一个值。

答案 1 :(得分:1)

尝试一下:

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']