[英]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']
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.