这是我写的描述我的问题的伪代码: -
func(s):
#returns a value of s
x = a list of strings
print func(x)
print x #these two should give the SAME output
当我最后打印x的值时,我希望它是func(x)返回的值。我是否可以通过编辑功能(并且不设置x = func(x)
)
答案 0 :(得分:8)
它已经如何表现,函数可以改变列表
>>> l = ['a', 'b', 'c'] # your list of strings
>>> def add_something(x): x.append('d')
...
>>> add_something(l)
>>> l
['a', 'b', 'c', 'd']
但请注意,您不能以这种方式改变原始列表
def modify(x):
x = ['something']
(上述内容将分配x
,但不会分配原始列表l
)
如果您想在列表中添加新列表,则需要执行以下操作:
def modify(x):
x[:] = ['something']
答案 1 :(得分:6)
func(s):
s[:] = whatever after mutating
return s
x = a list of strings
print func(x)
print x
你实际上并不需要退货:
def func(s):
s[:] = [1,2,3]
x = [1,2]
print func(x)
print x # -> [1,2,3]
这一切都取决于你实际在做什么,附加或列表的任何直接变异将反映在函数外部,因为你实际上正在改变传入的原始对象/列表。如果你正在做一些创建新对象的事情并且您希望在设置s[:] =..
中传递的列表中反映的更改将更改原始列表。