열거형 내부 목록 이해를 사용하는 Python
다음과 같은 목록이 있다고 가정해 보겠습니다.
mylist = ["a","b","c","d"]
인덱스와 함께 값을 인쇄하려면 Python의enumerate
이와 같은 기능
>>> for i,j in enumerate(mylist):
... print i,j
...
0 a
1 b
2 c
3 d
>>>
이제, 내가 그것을 안에서 사용하려고 할 때.list comprehension
그것은 나에게 이 오류를 줍니다.
>>> [i,j for i,j in enumerate(mylist)]
File "<stdin>", line 1
[i,j for i,j in enumerate(mylist)]
^
SyntaxError: invalid syntax
그래서 제 질문은: 내부 목록 이해를 열거하는 올바른 방법은 무엇인가요?
사용해 보십시오.
[(i, j) for i, j in enumerate(mylist)]
이거는.i,j
목록 이해를 위해 튜플 안에 있습니다.그 대신에, 그것을 고려할 때.enumerate()
이미 튜플을 반환합니다. 먼저 압축을 풀지 않고 직접 반환할 수 있습니다.
[pair for pair in enumerate(mylist)]
어느 쪽이든 결과가 예상대로 반환됩니다.
> [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
정말 분명히 말씀드리자면, 이것은 이 사건과enumerate
목록 이해 구문과 관련된 모든 것.
이 목록 이해는 튜플 목록을 반환합니다.
[(i,j) for i in range(3) for j in 'abc']
다음은 딕트 목록입니다.
[{i:j} for i in range(3) for j in 'abc']
목록:
[[i,j] for i in range(3) for j in 'abc']
구문 오류:
[i,j for i in range(3) for j in 'abc']
다음 중 일관성이 없고 사전 이해 구문과 혼동되는 것은 무엇입니까?
>>> {i:j for i,j in enumerate('abcdef')}
{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f'}
그리고 튜플 세트:
>>> {(i,j) for i,j in enumerate('abcdef')}
set([(0, 'a'), (4, 'e'), (1, 'b'), (2, 'c'), (5, 'f'), (3, 'd')])
오스카 로페스가 말했듯이, 당신은 열거형 튜플을 직접 전달할 수 있습니다.
>>> [t for t in enumerate('abcdef') ]
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f')]
또는 목록 이해도를 사용해야 하는 경우:
>>> mylist = ["a","b","c","d"]
>>> list(enumerate(mylist))
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
긴 목록을 사용하는 경우 목록 이해가 더 빠를 뿐만 아니라 더 쉽게 읽을 수 있습니다.
~$ python -mtimeit -s"mylist = ['a','b','c','d']" "list(enumerate(mylist))"
1000000 loops, best of 3: 1.61 usec per loop
~$ python -mtimeit -s"mylist = ['a','b','c','d']" "[(i, j) for i, j in enumerate(mylist)]"
1000000 loops, best of 3: 0.978 usec per loop
~$ python -mtimeit -s"mylist = ['a','b','c','d']" "[t for t in enumerate(mylist)]"
1000000 loops, best of 3: 0.767 usec per loop
방법은 다음과 같습니다.
>>> mylist = ['a', 'b', 'c', 'd']
>>> [item for item in enumerate(mylist)]
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
또는 다음을 수행할 수 있습니다.
>>> [(i, j) for i, j in enumerate(mylist)]
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
오류가 발생한 이유는 주변의 ()를 놓쳤기 때문입니다.i
그리고.j
튜플로 만들기 위해.
튜플에 대해 명확하게 설명합니다.
[(i, j) for (i, j) in enumerate(mylist)]
여러분 모두 좋은 답변입니다.여기서 질문이 열거형에 특정된다는 것을 알지만, 이런 것은 어떻습니까, 단지 다른 관점일 뿐입니다.
from itertools import izip, count
a = ["5", "6", "1", "2"]
tupleList = list( izip( count(), a ) )
print(tupleList)
성능 측면에서 여러 목록을 병렬로 반복해야 하는 경우 더 강력해집니다.생각일 뿐이야.
a = ["5", "6", "1", "2"]
b = ["a", "b", "c", "d"]
tupleList = list( izip( count(), a, b ) )
print(tupleList)
언급URL : https://stackoverflow.com/questions/10777271/python-using-enumerate-inside-list-comprehension
'prosource' 카테고리의 다른 글
십진수 값 형식을 선행 공백이 있는 문자열로 지정 (0) | 2023.05.13 |
---|---|
일부 프로젝트는 이미 Eclipse의 작업 공간 오류에 있으므로 가져올 수 없습니다. (0) | 2023.05.13 |
일부 컴퓨터에서 트랜잭션 범위가 자동으로 MSDTC로 에스컬레이션됩니까? (0) | 2023.05.08 |
모듈 이름을 문자열로 지정하여 동적으로 가져오려면 어떻게 해야 합니까? (0) | 2023.05.08 |
grep을 사용하여 문자열 "hello"가 있는 모든 파일을 현재 디렉터리에서 검색하고 .h 및 .cc 파일만 표시하려면 어떻게 해야 합니까? (0) | 2023.05.08 |