반응형
20000 개의 목록으로 구성된 목록이 있습니다. 각 목록의 세 번째 요소를 플래그로 사용합니다. 적어도 하나의 요소 플래그가 0 인 한이 목록에서 몇 가지 작업을 수행하고 싶습니다.
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
처음에는 모든 플래그가 0입니다. while 루프를 사용하여 하나 이상의 요소 플래그가 0인지 확인합니다.
def check(list_):
for item in list_:
if item[2] == 0:
return True
return False
check (my_list)
가 True
를 반환하면 목록 작업을 계속합니다.
while check(my_list):
for item in my_list:
if condition:
item[2] = 1
else:
do_sth()
사실, 나는 그것을 반복하면서 my_list에서 요소를 제거하고 싶었지만 그것을 반복하면서 항목을 제거 할 수 없습니다.
원래 my_list에는 플래그가 없습니다.
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
반복 할 때 요소를 제거 할 수 없기 때문에 이러한 플래그를 발명했습니다. 그러나 my_list
에는 많은 항목이 포함되어 있으며 while
루프는 각 for
루프에서 모든 항목을 읽고 많은 시간을 소비합니다! 의견 있으십니까?
해결 방법
>>> items = [[1, 2, 0], [1, 2, 0], [1, 2, 0]]
>>> all(flag == 0 for (_, _, flag) in items)
True
>>> items = [[1, 2, 0], [1, 2, 1], [1, 2, 0]]
>>> all(flag == 0 for (_, _, flag) in items)
False
all (flag == 0 for (_, _, flag) in items)
은 all (item [2] == 0 for item in items)
,이 경우 읽기가 조금 더 좋습니다.
그리고 필터 예제의 경우 목록 이해도 (물론 적절한 경우 생성기 표현식을 사용할 수 있습니다) :
>>> [x for x in items if x[2] == 0]
[[1, 2, 0], [1, 2, 0]]
>>> any(flag == 0 for (_, _, flag) in items)
True
참조 페이지 https://stackoverflow.com/questions/10666163
반응형
'파이썬' 카테고리의 다른 글
파이썬 Django : 개발 및 프로덕션 설정을 관리하는 방법은 무엇입니까? (0) | 2021.02.16 |
---|---|
파이썬 Python의 for 루프에서 목록 요소를 제거하는 방법은 무엇입니까? (0) | 2021.02.16 |
파이썬은 재귀를 사용하지 않고 숫자 집합을 제외하는 난수를 생성 할 수 있습니까? (0) | 2021.02.16 |
파이썬 한 줄로 목록에있는 항목이 다른 목록에 있는지 확인 하시겠습니까? (0) | 2021.02.16 |
파이썬 Python을 사용하여 3D 배열 만들기 (0) | 2021.02.16 |
댓글