Python 如何确定列表中是否包含字母

Python 如何确定列表中是否包含字母,python,list,letter,Python,List,Letter,我有一个列表,如果它包含任何信件,我试图得到一个虚假的回报。当我看到下面的列表时: list = ['1', '+', 'b1'] 我试着跑 any(characters.isalpha() for characters in list) 但它返回了False,尽管列表[2]显然包含一个字母 因此,我尝试执行以下操作,认为我可能没有正确地迭代列表中的每个项目: for characters in list: any(characters.isalpha() for char in ch

我有一个列表,如果它包含任何信件,我试图得到一个虚假的回报。当我看到下面的列表时:

list = ['1', '+', 'b1'] 
我试着跑

any(characters.isalpha() for characters in list)
但它返回了False,尽管列表[2]显然包含一个字母

因此,我尝试执行以下操作,认为我可能没有正确地迭代列表中的每个项目:

for characters in list:
  any(characters.isalpha() for char in characters)
返回

False
False
False
我不知道如何让程序检测到有一个字母,并在查询列表是否包含字母时返回True。如果你能帮我找到答案,我将不胜感激

for characters in letter:
  any(characters.isalpha() for char in characters)
你有一个打字错误,你可能是说:

for characters in letter:
  any(char.isalpha() for char in characters)
此外,您还可以在生成器表达式内将这两个循环合并为一个循环:

any(char.isalpha() for letters in list for char in letters)
你有一个打字错误,你可能是说:

for characters in letter:
  any(char.isalpha() for char in characters)
此外,您还可以在生成器表达式内将这两个循环合并为一个循环:

any(char.isalpha() for letters in list for char in letters)
你需要另一个。。。在里面子句迭代每个字符串中的每个字符:

>>> lst = ['1', '+', 'b1']
>>> any(char.isalpha() for string in lst for char in string)
True
>>>
for char in string获取由for string in lst返回的每个字符串,并对其字符进行迭代。

您需要另一个for string来。。。在里面子句迭代每个字符串中的每个字符:

>>> lst = ['1', '+', 'b1']
>>> any(char.isalpha() for string in lst for char in string)
True
>>>

for char in string获取由for string in lst返回的每个字符串,并对其字符进行迭代。

您可以使用任意或全部字符串执行此操作

顺便说一句,至少在这个相对较小的情况下,所有的速度都更快

>>> import timeit
>>> timeit.timeit('not all(character.isalpha() for item in ["1", "+", "b1"] for character in item)', number=10000)
0.021654181380604598
>>> timeit.timeit('any(character.isalpha() for item in ["1", "+", "b1"] for character in item)', number=10000)
0.034381219301721444
但如果你改变了顺序,这就不成立了

>>> timeit.timeit('not all(character.isalpha() for item in ["b1", "+", "1"] for character in item)', number=10000)
0.0663501940999538
>>> timeit.timeit('any(character.isalpha() for item in ["b1", "+", "1"] for character in item)', number=10000)
0.037434049209622344

因此,选择一个或另一个主要是个人偏好

你可以选择任何一个或全部

顺便说一句,至少在这个相对较小的情况下,所有的速度都更快

>>> import timeit
>>> timeit.timeit('not all(character.isalpha() for item in ["1", "+", "b1"] for character in item)', number=10000)
0.021654181380604598
>>> timeit.timeit('any(character.isalpha() for item in ["1", "+", "b1"] for character in item)', number=10000)
0.034381219301721444
但如果你改变了顺序,这就不成立了

>>> timeit.timeit('not all(character.isalpha() for item in ["b1", "+", "1"] for character in item)', number=10000)
0.0663501940999538
>>> timeit.timeit('any(character.isalpha() for item in ["b1", "+", "1"] for character in item)', number=10000)
0.037434049209622344

所以选择一个或另一个很大程度上是个人偏好

“+”。isalpha实际上是错误的,因为它不是alpha,比如[a-zA-Z]@JoranBeasley谢谢我编辑了它。而且我知道它可能不是你真正的变量名。。。但你永远都不应该给变量命名,比如list、int或float,即使是在特别的示例片段中也不应该。。。相反,至少把它命名为我的清单,或者我的智力或者其他什么。。。不要隐藏内置的“+”。isalpha实际上是假的,因为它不是alpha,比如[a-zA-Z]@JoranBeasley谢谢我编辑了它。而且我知道它可能不是你真正的变量名。。。但你永远都不应该给变量命名,比如list、int或float,即使是在特别的示例片段中也不应该。。。相反,至少把它命名为我的清单,或者我的智力或者其他什么。。。不要给内置物投下阴影