Python My for循环只将列表的一半从str转换为in

2024-09-29 06:26:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望我的代码循环遍历列表中的每一项,并将其从str转换为int,但它只转换列表的一半,而且顺序不规则。 我的代码:

for item in list:
    list.append(int(item))
    list.remove(item)
print (list)

例如,如果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的知识和经验很少,所以我很可能不会理解,除非它是真正的基础知识和行话解释。在


Tags: 方法代码in列表for顺序经验item
3条回答

你为什么不用这样的东西:

l = list(map(int, l))

它只是对来自l的每个项调用函数int。 这是doc。在

使用list comprehension

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循环:

^{pr2}$

以上两个答案都很好,但为什么你的代码不能工作也应该得到解决。在

首先,在迭代列表时更改列表。这是你不应该做的事。这可能会引起问题,比如你的问题。在

其次,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]

如你所见,没有按预期工作

相关问题 更多 >