相关疑难解决方法(0)

如何在for循环期间修改列表条目?

现在我知道在迭代循环期间修改列表是不安全的.但是,假设我有一个字符串列表,我想自己去除字符串.替换可变值是否算作修改?

python

150
推荐指数
5
解决办法
21万
查看次数

Python如何在内部管理'for'循环?

我正在尝试学习Python,我开始使用一些代码:

a = [3,4,5,6,7]
for b in a:
    print a
    a.pop(0)
Run Code Online (Sandbox Code Playgroud)

输出是:

[3, 4, 5, 6, 7]
[4, 5, 6, 7]
[5, 6, 7]
Run Code Online (Sandbox Code Playgroud)

我知道在我循环的时候改变数据结构并不是一个好的做法,但我想了解Python在这种情况下如何管理迭代器.

主要问题是:如果我改变状态,它如何知道它必须完成循环a

python for-loop data-structures

16
推荐指数
2
解决办法
2976
查看次数

在迭代python列表时修改元素时这种行为背后的原因是什么

在下面的代码中,第一种类型的修改改变了原始列表,而在第二个列表中保持不变。为什么行为是这样?

temp = [{"a":"b"},{"c":"d"},{"e":"f"},{"a":"c"}]

for item in temp:
    if "a" in item:
        item["a"] = "x"
print(temp)
Run Code Online (Sandbox Code Playgroud)
temp = [{"a":"b"},{"c":"d"},{"e":"f"},{"a":"c"}]

for item in temp:
    item  = {}
print(temp)
Run Code Online (Sandbox Code Playgroud)

第一个的输出是 [{'a': 'x'}, {'c': 'd'}, {'e': 'f'}, {'a': 'x'}]

第二个是 [{'a': 'b'}, {'c': 'd'}, {'e': 'f'}, {'a': 'c'}]

Python 版本是 3.6.5

python dictionary list python-3.x

2
推荐指数
1
解决办法
127
查看次数

如何在迭代列表时修改列表元素?

在 Python 中,迭代列表时无法修改列表。例如,下面我无法修改list_1,并且结果print将是[0, 1, 2, 3, 4]。在第二种情况下,我循环遍历类实例列表,并调用该set_n方法修改列表中的实例,同时迭代它。确实,意志print给予[4, 4, 4, 4, 4]

这两个案例有何不同,为什么?

# First case: modify list of integers 
list_1 = [0, 1, 2, 3, 4]
for l in list_1:
    l += 1
print(list_1)

# Second case: modify list of class instances
class Foo:
    def __init__(self, n):
        self.n = n
        
    def set_n(self, n):
        self.n = n
        
list_2 = [Foo(3)] * 5
for l in list_2:
    l.set_n(4)
print([l.n for …
Run Code Online (Sandbox Code Playgroud)

python iterable list

1
推荐指数
1
解决办法
2602
查看次数