我希望我的代码循环遍历列表中的每个项目并将其从str转换为int,但它只转换列表的一半并按不规则的顺序。 我的代码:
for item in list:
list.append(int(item))
list.remove(item)
print (list)
例如,如果列表是['5','6','3','5','6','2','6','8','5','4',' 2','8']
决赛将是['6','8','5','4','2','8',3,6,2,6,5,5]
只有一半转换而不是按顺序。
我可以用另一种方式做到这一点,但是这样做的时间要长得多,所以想要解决这个问题并添加我对for循环的了解。
我对Python的知识和经验很少,所以我很可能不会理解,除非它是基本的并且解释了行话。
答案 0 :(得分:5)
l = ['5', '6', '3', '5', '6', '2', '6', '8', '5', '4', '2', '8']
output = [int(i) for i in l]
print(output)
[5, 6, 3, 5, 6, 2, 6, 8, 5, 4, 2, 8]
如果您不理解列表理解,可以使用简单的for
循环:
l1 = []
for i in l:
l1.append(int(i))
print(l1)
[5, 6, 3, 5, 6, 2, 6, 8, 5, 4, 2, 8]
答案 1 :(得分:3)
上面的两个答案都很好,但为什么你的代码不起作用也应该得到解决。
首先,您在迭代时更改列表。这是你不应该做的事情。它可能会导致问题,例如你的问题。
其次,remove方法删除它遇到的符合给定参数的列表中的第一个元素,它也应该小心使用。
第三,不应将list用作变量名。因为它是一个内置的类。
for item in list:
print (list)
list.append(int(item))
list.remove(item)
# Prints
['5', '6', '3', '5', '6', '2', '6', '8', '5', '4', '2', '8']
['6', '3', '5', '6', '2', '6', '8', '5', '4', '2', '8', 5]
['6', '5', '6', '2', '6', '8', '5', '4', '2', '8', 5, 3]
['5', '6', '2', '6', '8', '5', '4', '2', '8', 5, 3, 6]
['5', '2', '6', '8', '5', '4', '2', '8', 5, 3, 6, 6]
['2', '6', '8', '5', '4', '2', '8', 5, 3, 6, 6, 5]
['6', '8', '5', '4', '2', '8', 5, 3, 6, 6, 5, 2]
['6', '8', '5', '4', '2', '8', 3, 6, 6, 5, 2, 5]
['6', '8', '5', '4', '2', '8', 3, 6, 5, 2, 5, 6]
['6', '8', '5', '4', '2', '8', 3, 6, 2, 5, 6, 5]
['6', '8', '5', '4', '2', '8', 3, 6, 2, 6, 5, 5]
['6', '8', '5', '4', '2', '8', 3, 6, 2, 6, 5, 5]
['6', '8', '5', '4', '2', '8', 3, 6, 2, 6, 5, 5]
如你所见,没有按预期工作
答案 2 :(得分:2)
答案 3 :(得分:0)
虽然其他两个答案为您提供了将字符串列表转换为整数的更好方法,但它们确实无法回答您的问题。您的主要问题是,当您的for
循环对其进行操作时,您正在改变(更改)列表结构。你不应该改变列表结构(删除元素或追加),因为循环迭代变量item
不同步。无法将item
重新同步到新的列表结构。
顺便说一句:这不是一个随机的顺序。这是其他所有项目。
您可以像这样编写转换循环,因为您不会改变列表的结构,只会改变单个元素:
for i in xrange(len(l)):
l[i] = int(l[i])
不要这样写:
for item in l:
item = int(item)
它不会改变单个列表元素,即使您认为它确实如此。它与Python迭代器的工作方式有关。
答案 4 :(得分:0)
试试这个:
>>> list = ['5', '6', '3', '5', '6', '2', '6', '8', '5', '4', '2', '8']
>>> for item in list[:]:
... list.append(int(item))
... list.remove(item)
...
>>> print(list)
[5, 6, 3, 5, 6, 2, 6, 8, 5, 4, 2, 8]
说明:这里我们迭代列表的一个克隆,但是对原始列表进行操作。
PS:list
是python中的关键字。应避免将其用作变量名。