gpt4 book ai didi

python - 为什么我的函数会覆盖作为参数传递的列表?

转载 作者:太空狗 更新时间:2023-10-29 23:58:08 25 4
gpt4 key购买 nike

<分区>

我创建了一个将列表作为参数的函数。它打乱列表,替换第一个元素并返回新列表。

import random
firstList=["a","b","c","d","e","f","g","h","i"]

def substitution(importedList):
random.shuffle(importedList)
importedList[0]="WORD"
return importedList

洗牌对我的问题没有影响。然而,我惊讶地看到返回的 importedList 覆盖了原来的 firstList。

>>> firstList
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']

>>> substitution(firstList)
['WORD', 'a', 'b', 'd', 'i', 'c', 'g', 'e', 'h']

>>> firstList
['WORD', 'a', 'b', 'd', 'i', 'c', 'g', 'e', 'h']

我通过在函数内复制列表找到了解决方法,但它似乎效率低下。

import random
firstList=["a","b","c","d","e","f","g","h","i"]
string="a"

def substitutionandcopy(importedList):
copiedList=importedList[:]
random.shuffle(copiedList)
copiedList[0]="WORD"
return copiedList

我的问题是为什么函数会替换 firstList?例如,如果它是一个字符串,就不会发生这种情况。

string="a"

def substituteString(foo):
foo='b'
return foo

>>> string
'a'

>>> substituteString(string)
'b'

>>> string
'a'

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com