为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

郎朗坤 2021-09-14 16:47:39
我正在尝试为保存在数组中的每个记录提取记录中的第一个数字(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(...))


查看完整回答
反对 回复 2021-09-14
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

尝试这个:


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


查看完整回答
反对 回复 2021-09-14
  • 2 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号