skv*_*len 1 python pass-by-value
我在dict列表中有点头疼.
def funk(x):
    for i in x:
        i['a'] += 1
        print i
list1 = [{'a':1, 'b':2}, {'a':3, 'b':4}]
funk(list1)
print list1
这将输出:
{'a': 2, 'b': 2}
{'a': 4, 'b': 4}
[{'a': 2, 'b': 2}, {'a': 4, 'b': 4}]
但我希望有这个:
{'a': 2, 'b': 2}
{'a': 4, 'b': 4}
[{'a':1, 'b':2}, {'a':3, 'b':4}]
如何使list1保持不变?例如:[{'a':1,'b':2},{'a':3,'b':4}]
funk()可以制作副本x并修改该副本,而不是修改原始副本x.
import copy
def funk(x):
    x = copy.deepcopy(x)
    for i in x:
        i['a'] += 1
        print i
list1 = [{'a':1, 'b':2}, {'a':3, 'b':4}]
funk(list1)
print list1
| 归档时间: | 
 | 
| 查看次数: | 4602 次 | 
| 最近记录: |