对于作业,我必须在不使用Python内置函数的情况下过滤列表。这是我的代码:
def satisfiesF(L):
result = 0
i = 0
L1 = []
while i < len(L):
s = L[i]
if f(s) == True :
result += 1
L1.append(L[i])
i += 1
L = L1
print L
return result
def f(s):
return 'a' in s
L = ['a', 'b', 'a']
print satisfiesF(L)
print L
它打印:
['a', 'a']
2
['a', 'b', 'a']
为什么第二个L与第一个L不同?我已经搜索了几个小时,但我听不懂。在我看来,这里L是通过引用传递的,那么为什么值不更改?
我试过更改行L = L1
,L = list(L1)
但结果是相同的。
L = L1
这L
参考了所引用的列表L1
。print(id(L))
在此行之前和之后添加,您可能会看到其id
已更改。
在获取内容的同时保持L
相同的一种方法是先将其清除,然后追加:id
L1
del L[:]
L.append(L1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句