아래에 첫 번째 요소가 id이고 다른 요소가 문자열 인 목록이 있습니다.
[(1, u'abc'), (2, u'def')]
다음과 같이이 튜플 목록에서만 ID 목록을 만들고 싶습니다.
[1,2]
이 목록을 사용 __in
하므로 정수 값 목록이어야합니다.
답변
>>> a = [(1, u'abc'), (2, u'def')]
>>> [i[0] for i in a]
[1, 2]
답변
zip 기능을 사용하여 요소를 분리하십시오.
>>> inpt = [(1, u'abc'), (2, u'def')]
>>> unzipped = zip(*inpt)
>>> print unzipped
[(1, 2), (u'abc', u'def')]
>>> print list(unzipped[0])
[1, 2]
편집 (@BradSolomon) : 위는 Python 2.x에서 작동하며 여기서 zip
목록을 반환합니다.
Python 3.x에서는 zip
반복자를 반환하며 다음은 위와 같습니다.
>>> print(list(list(zip(*inpt))[0]))
[1, 2]
답변
이 같은 것을 의미합니까?
new_list = [ seq[0] for seq in yourlist ]
실제로 가지고있는 것은 tuple
세트 목록이 아닌 객체 목록입니다 (원래 질문이 암시 한 것처럼). 실제로 세트 목록 인 경우 세트에 순서가 없기 때문에 첫 번째 요소 가 없습니다.
여기서는 일반적으로 1 요소 튜플 목록을 만드는 것보다 더 유용하기 때문에 플랫 목록을 만들었습니다. 그러나, 당신은 쉽게 바로 교체하여 1 개 요소 튜플의 목록을 만들 수 있습니다 seq[0]
로 (seq[0],)
.
답변
“튜플 포장 풀기”를 사용할 수 있습니다.
>>> my_list = [(1, u'abc'), (2, u'def')]
>>> my_ids = [idx for idx, val in my_list]
>>> my_ids
[1, 2]
반복시 각 튜플의 압축이 풀리고 해당 값이 변수 idx
및 로 설정됩니다 val
.
>>> x = (1, u'abc')
>>> idx, val = x
>>> idx
1
>>> val
u'abc'
답변
이것은 무엇 operator.itemgetter
을위한 것입니다.
>>> a = [(1, u'abc'), (2, u'def')]
>>> import operator
>>> b = map(operator.itemgetter(0), a)
>>> b
[1, 2]
itemgetter
문은 함수 반환 지정한 요소의 인덱스를 반환합니다. 글쓰기와 똑같습니다
>>> b = map(lambda x: x[0], a)
그러나 나는 그것이 itemgetter
더 명확하고 더 명백 하다는 것을 안다 .
이것은 간단한 정렬 문장을 만드는 데 편리합니다. 예를 들어
>>> c = sorted(a, key=operator.itemgetter(0), reverse=True)
>>> c
[(2, u'def'), (1, u'abc')]
답변
python3.X의 성능 관점에서
[i[0] for i in a]
그리고list(zip(*a))[0]
동등하다- 그들은보다 빠르다
list(map(operator.itemgetter(0), a))
암호
import timeit
iterations = 100000
init_time = timeit.timeit('''a = [(i, u'abc') for i in range(1000)]''', number=iterations)/iterations
print(timeit.timeit('''a = [(i, u'abc') for i in range(1000)]\nb = [i[0] for i in a]''', number=iterations)/iterations - init_time)
print(timeit.timeit('''a = [(i, u'abc') for i in range(1000)]\nb = list(zip(*a))[0]''', number=iterations)/iterations - init_time)
산출
3.491014136001468e-05
3.422205176000717e-05
답변
튜플이 고유하면 작동 할 수 있습니다
>>> a = [(1, u'abc'), (2, u'def')]
>>> a
[(1, u'abc'), (2, u'def')]
>>> dict(a).keys()
[1, 2]
>>> dict(a).values()
[u'abc', u'def']
>>>