Python 为什么我只能从列表中得到一项

Python 为什么我只能从列表中得到一项,python,string,list,Python,String,List,我试图从字符串中获取共享的字母,而不是从字母列表中获取。我只返回l与w共享的最后一个字母。我想要所有的共享信件 def f(w,l): common = [] for i in w: if in i in l: return common.append(i) 只要i在l中,您的代码返回s,它将立即退出您的函数。而是这样做: def f(w,l): common = [] for i in w: if i i

我试图从字符串中获取共享的字母,而不是从字母列表中获取。我只返回l与w共享的最后一个字母。我想要所有的共享信件

def f(w,l):
    common = []
    for i in w:
        if in i in l:
            return common.append(i)

只要
i
l
中,您的代码
返回
s,它将立即退出您的函数。而是这样做:

def f(w,l):
    common = []
    for i in w:
        if i in l:
            common.append(i) # no return needed so it will collect all
    return common
确保在函数末尾返回
common
,以便获得
common
中存储的所有值

试试这个:

def f(w,l):
    common = []
    for i in w:
        if i in l:
            common.append(i)

    return common

问题是列表的
.append
方法返回
None
。您第一次执行
.append
,是从函数返回的,因此总是从函数返回
None

我认为你真正想要的是一份清单:

def f(w,l):
    return [i for i in w if i in l]

正如其他人所指出的,您可能希望选择更具描述性的变量名。

您不应该返回任何字母<代码>公用。追加(i)将始终返回
None
。。。假设你不想保存重复,等等,你最好使用SET:<代码> SET(W)。交集(L)< /代码>将或多或少地做你想要的。你可以考虑使用<代码> W和<代码> L>代码>,这样你就可以只使用<代码> W.交集(L)< /代码>。此外,考虑将变量<代码> L>代码>重命名为<代码> L>代码>,因为它看起来像是一些字体中的数字1。如果有帮助,请考虑接受这个答案。