在python中过滤字符串列表

莉尔·J

对于作业,我必须在不使用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 = L1L = list(L1)但结果是相同的。

Yu Hao
L = L1

L参考了所引用的列表L1print(id(L))在此行之前和之后添加,您可能会看到其id已更改。

在获取内容的同时保持L相同的一种方法是先将其清除,然后追加:idL1

del L[:]
L.append(L1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章