繁体   English   中英

迭代切片列表以删除 Python 中的数字

[英]Iteration over sliced list to remove digits in Python

我有这个列表,它是从网站上抓取的梦幻足球联赛的排名:

rank = ['1', 'Kaufman Foundation0', '0', '2', 'sasicc e friarielli0', '0', '3', 'Mordi1992 Team0', '0', '4', 'Japanese Cry Team0', '0', '5', 'Le Rondini FC0', '0', '6', 'Team Mclaury0', '0', '7', 'Team Discio0', '0', '8', 'Papa Sarto Calcio0', '0']

我想删除每个包含团队名称的字符串末尾令人讨厌的 0。

我试过这个

for i in range(len(rank[1::3])):
    rank[i] = ''.join([x for x in rank[1::3] if not x.isdigit()])

没有成功。 我希望正确修改列表“排名”,以便我可以打印它。 我从另一篇文章中复制了列表理解行,因为如果我在列表的单个元素上使用它,它会起作用,但当然在 for 循环内不起作用。

output 应该是:

1 - Kaufman Foundation 0 
2 - sasicc e friarielli 0
...

go 的最佳方式是什么?

rank = ['1', 'Kaufman Foundation0', '0', '2', 'sasicc e friarielli0', '0', '3', 'Mordi1992 Team0', '0', '4', 'Japanese Cry Team0', '0', '5', 'Le Rondini FC0', '0', '6', 'Team Mclaury0', '0', '7', 'Team Discio0', '0', '8', 'Papa Sarto Calcio0', '0']
rank_=[l.rstrip('0') for l in rank[1::3]]

尝试这个

rank_=[rank[0]]+[n.rstrip('0') if m%3==0 else n for m, n in enumerate(rank[1::])]
print(rank_)

您可以迭代rank中每 3 个项目的中间并更新它:

rank = ['1', 'Kaufman Foundation0', '0', '2', 'sasicc e friarielli0', '0', '3', 'Mordi1992 Team0', '0', '4', 'Japanese Cry Team0', '0', '5', 'Le Rondini FC0', '0', '6', 'Team Mclaury0', '0', '7', 'Team Discio0', '0', '8', 'Papa Sarto Calcio0', '0']

for i in range(1, len(rank), 3):
    rank[i] = rank[i][:-1]

print(rank)

Output:

['1', 'Kaufman Foundation', '0', '2', 'sasicc e friarielli', '0', '3', 'Mordi1992 Team', '0', '4', 'Japanese Cry Team', '0', '5', 'Le Rondini FC', '0', '6', 'Team Mclaury', '0', '7', 'Team Discio', '0', '8', 'Papa Sarto Calcio', '0']
  • 如果列表项是数字,则保留它。
  • 否则,从中删除尾随的“0”。
rank = [x[:-1] if not x.isnumeric() else x for x in rank]
>>> rank
['1', 'Kaufman Foundation', '0', 
 '2', 'sasicc e friarielli', '0', 
 '3', 'Mordi1992 Team', '0', 
 '4', 'Japanese Cry Team', '0', 
 '5', 'Le Rondini FC', '0', 
 '6', 'Team Mclaury', '0', 
 '7', 'Team Discio', '0', 
 '8', 'Papa Sarto Calcio', '0']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM