如何找出列表中是否包含字母

2024-10-01 07:13:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份清单,如果里面有字母,我想得到一份虚假的报税表。当我看到以下列表时:

list = ['1', '+', 'b1'] 

我试着跑

^{pr2}$

但它返回的是False,尽管list[2]显然包含一个字母。在

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

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

它回来了

False
False
False

我不知道如何让程序接收到有一个字母,并返回True来查询list是否包含任何字母。如果你能帮我找出答案,我将不胜感激。在


Tags: in程序falsetrue列表for字母any
3条回答

您需要另一个for ... in ...子句来迭代每个字符串中的每个字符:

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

for char in string获取for string in lst返回的每个字符串并在其字符上迭代。在

您可以使用anyall来执行此操作

>>> all(character.isalpha() for item in alist for character in item)
False
>>> any(character.isalpha() for item in alist for character in item)
True
>>> ## if you want the same output as using any
>>> not all(character.isalpha() for item in alist for character in item)
True

顺便说一下,all更快(至少在这个相对较小的情况下)

^{pr2}$

但如果你改变顺序,这就不成立了

>>> 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

所以选择其中一个很大程度上是个人偏好

for characters in letter:
  any(characters.isalpha() for char in characters)

你的错别字可能是说:

^{pr2}$

此外,可以在生成器表达式内将这两个循环合并为一个:

any(char.isalpha() for letters in list for char in letters)

相关问题 更多 >