2017-10-19 3 views
0

if 문이 True 일 때 열거 형이 증가하는 목록 이해력에서 열거 방법이 있습니까?목록 이해력 및 If 문을 사용하는 Python 열거 형

예를 들어, 아래 코드는 if 문이 True인지 False인지 열거하고 연속 인덱스를 갖고 싶습니다.

my_list = [0,1,2] [i for i, w in enumerate(my_list) if w != 1]

은 또한 다음을 시도,하지만 당신은 다음과 같은 지능형리스트 내에서 패스를 사용할 수 없습니다.

[i if w != 1 else pass for i, w in enumerate(my_list)] 
+1

좀 답변을 볼 수 있지만, 난 당신이 ouptut으로 원하는 것을 이해 모르겠어요. 원하는 것을 샘플로 출력 할 수 있습니까? – RobertB

+0

이것은 장난감의 예일 뿐이지 만, 키를 인덱싱하기 위해 숫자를 건너 뛰지 않고 값이 증가하는 사전 이해를 원했습니다. 아래의 답변은 내가 필요한 것을 구현하는 좋은 방법을 제공합니다. –

답변

2

있습니다. 한 가지 간단한 방법은 itertools.count을 사용하는 것입니다

>>> from itertools import count 
>>> c = count(0) 
>>> my_list = [0,1,2] 
>>> [next(c) for w in my_list if w != 1] 
[0, 1] 

을 그러나이 : ​​이것은 그냥 ... 좋지 않다 목록 - 이해, 내부 상태 변화를 포함한다. , 내가 좋아하는 일을 할 것 대신

>>> [next(c) for w in my_list if w != 1] 
[2, 3] 
>>> [next(c) for w in my_list if w != 1] 
[4, 5] 

: 당신이 다시 이해를 실행하는 경우,이 불행한 영향을 미칠 것이다, 주

>>> range(sum(w != 1 for w in my_list)) 
range(0, 2) 
1

어떻게 지능형리스트 내에서 지능형리스트 (발전기)를 넣어 약 ?

my_list = [0,1,2] 
[i for i, w in enumerate((_ for _ in my_list if _ != 1)) ] 

출력은 :

[0, 1] 
+0

흠 .. 아마도 none 값을 처리하기를 원하는지 묻지 않았다. –