为什么我的for循环不编辑全局列表I并循环浏览和编辑?

2024-06-23 19:51:19 发布

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

可能有一个匹配的问题。我有一个全局定义的列表,我试图通过使用特定的if语句来迭代列表和编辑某些元素。我的问题是,当我在循环之前打印列表和之后打印列表时,它们仍然是相同的。你知道吗

我考虑过使用enumerate来手动编辑list[“enumerated number”],使用连接到元素的数字,但这看起来很笨拙。你知道吗

print(list)
for el in list:
    print(el)
    if el < 1:
        el = 0
    elif el > 1:
        el = 2
print(list)

我希望得到的输出是根据if语句编辑的顶部列表。你知道吗


Tags: 元素编辑number列表if定义数字手动
3条回答

正如Derek Langley所建议的,您可以通过索引列表来实现。与range(len(list))相比,使用enumerate(list)是一个好习惯

print(list)
for index, value in enumerate(list):
    print(value)
    if value < 1:
        list[index] = 0
    elif value > 1:
        list[index] = 2
print(list)

编辑:我本想添加这个作为评论,但我还没有足够的点!你知道吗

请尝试以下操作:

for i in range(len(list)):
    if list[i] < 1:
        list[i] = 0
    elif list[i] > 1:
        list[i] = 2

我相信代码不起作用的原因是因为引用的是列表中的对象,而不是对象的位置。你知道吗

这不起作用的原因是Python变量只是名称。每次通过循环时,el最初被设置为下一个列表索引中的名称。例如,如果下一个值是3,那么每当el出现时,计算机就会用3替换它。你知道吗

但是当你有一个像el = 2这样的语句时,你所做的就是告诉计算机从现在起,el只是数字2的另一个名称。您实际上还没有编辑基础列表元素。为此,您需要执行以下操作:

for i in range(len(list)):
    print(list[i])
    if list[i] < 1:
        list[i] = 0
    elif list[i] > 1:
        list[i] = 2

这样做的原因是,您实际上是在更改列表元素本身,而不是为每个列表元素指定一个名称,然后将该名称指定给其他元素。你知道吗

相关问题 更多 >

    热门问题