迭代切片列表以删除 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()])
没有成功。
我想正确修改列表“排名”,以便我可以打印它。
我从另一个 post 复制了列表理解线,因为如果我在列表的单个元素上使用它,它会起作用,但当然在 for 循环内不起作用。
输出应该是:
1 - Kaufman Foundation 0
2 - sasicc e friarielli 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']
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)
输出:
['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 = ['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()])
没有成功。 我想正确修改列表“排名”,以便我可以打印它。 我从另一个 post 复制了列表理解线,因为如果我在列表的单个元素上使用它,它会起作用,但当然在 for 循环内不起作用。
输出应该是:
1 - Kaufman Foundation 0
2 - sasicc e friarielli 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']
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)
输出:
['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']