問題: 當您使用建設變化值
for a in _list_:
print a
它打印在每一個數組項。但是你不能改變數組。是否有可能改變數組的值(類似於= 123,但這是行不通的) 我知道這是可能的(例如在while循環中),但我想這樣做(更優雅)
在PHP它會像
foreach ($array as &$value) {
$value = 123;
}
(因爲&
跡象,作爲引用傳遞)
問題: 當您使用建設變化值
for a in _list_:
print a
它打印在每一個數組項。但是你不能改變數組。是否有可能改變數組的值(類似於= 123,但這是行不通的) 我知道這是可能的(例如在while循環中),但我想這樣做(更優雅)
在PHP它會像
foreach ($array as &$value) {
$value = 123;
}
(因爲&
跡象,作爲引用傳遞)
for idx, a in enumerate(foo):
foo[idx] = a + 42
不過請注意,如果你這樣做,你應該看看列表解析(或map
),除非你r最後想要就地變異(只是不要插入或從迭代列表中刪除項目)。
寫成一個列表理解同一迴路的樣子:
foo = [a + 42 for a in foo]
因爲Python迭代器只是一個「標籤」到內存中的對象,設置它將使只是指向別的東西。
如果迭代器是一個可變對象(列表,集合,字典等),您可以修改它並在同一個對象中查看結果。
>>> a = [[1,2,3], [4,5,6]]
>>> for i in a:
... i.append(10)
>>> a
[[1, 2, 3, 10], [4, 5, 6, 10]]
如果你想設置的各個值,比方說,123,你既可以用列表索引和訪問,或使用list comprehension:
>>> a = [1,2,3,4,5]
>>> a = [123 for i in a]
>>> a
[123, 123, 123, 123, 123]
但是,你將創建另一個列表綁定到相同的名稱。