【发布时间】:2016-01-21 11:24:27
【问题描述】:
我需要编写一个函数,从作为参数传递的列表中删除前两项并更改它。 不返回修改后的列表
所以如果来电:
fruits = ['apple','orange','grape','banana']
print fruits # prints ['apple','orange','grape','banana']
f1(fruits)
print fruits # prints ['grape','banana']
我试过了:
def f1(a):
a[:] = a[2:] # throws TypeError: 'str' object does not support item assignment
def f1(a):
a = a[2:] # doesn't change the value of fruits
f1(*a) 似乎都不起作用。我搜索了 StackOverflow,但似乎找不到答案。
请不要告诉我从f1返回a的值。
【问题讨论】:
-
第一个函数,
a[:] = a[2:],对我来说很好用。 -
可变对象在 Python 中总是通过引用传递。如果将列表作为参数传递给您的第一个
f1()函数,则它不会引发TypeError(这是执行您想要的操作的正确方法)。看起来你必须在测试时传递了一个字符串。 -
你是对的 martineau,但昨天我用正常的字符串列表尝试了它,但它不起作用。奇怪的是现在它可以工作了