2014-06-11 5 views
1

글자가 포함 된 경우 거짓 반환을 시도하는 목록이 있습니다. 나는 다음과 같다 목록에 도착하면 :목록에 글자가 포함되어 있는지 확인하는 방법

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

을 나는

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

를 실행하려고하지만 목록 [2] 명확하게 편지를 포함하더라도, false를 반환한다.

False 
False 
False 

을 반환

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

나는 방법에 대한 손실에 있어요 :

그래서 내가 제대로 목록의 각 항목에 걸쳐 반복되지 않았을 수 있습니다 생각, 다음을 수행하려 프로그램에 편지가 있는지 확인하고 목록에 문자가 있는지 여부에 대한 쿼리를 True로 반환합니다. 당신이 그 답을 이해하도록 도와 줄 수 있다면 크게 감사 할 것입니다. 당신은 거기에 오타가

+0

isalpha()는 실제로 거짓입니다. [a-zA-Z] – PepperoniPizza

+0

@JoranBeasley와 같은 알파가 아니기 때문에 실제로 편집했습니다. – maudulus

+2

또한 실제 변수 이름이 아닐지도 모르겠지만,'list' 나'int' 또는'float'과 같은 가변적 인 변수의 이름을 절대 지 말아서는 안됩니다. 적어도 my_list, 또는 my_int 또는 something ... 그림자를 내장하지 않는다. –

답변

3

:

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

무엇보다, 당신이 발전기 표현 안에, 하나에 두 루프를 병합 할 수 있습니다 또 다른 for ... in ... 절을 사용하면 각 문자열의 각 문자를 반복 할 수 있습니다.

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

for char in stringfor string in lst에 의해 반환 된 각 문자열을 가져 와서 해당 문자를 반복합니다. 당신은 또한 하나 any 또는 all

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

하여이 작업을 수행 할 수

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

, 당신은 아마 의미 : 당신이 필요로하는

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

all은 변경하면

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

이렇게 따기 ne 또는 다른 사람은 주로 개인적 취향입니다.

관련 문제