다음과 같은 목록이 있습니다.요소의 위치를 기준으로 목록에서 새 목록을 만듭니다.
['US', 20, 'en', 'UK', 21, 'en', 'Fra', 23, 'fr']
위와 같은 3 개의 새로운 목록을 만드는 가장 효율적인 방법은 무엇입니까? 하나 (재미) 라인에서
['US', 'UK', 'Fra']
[20, 21, 23]
['en', 'en', 'fr']
다음과 같은 목록이 있습니다.요소의 위치를 기준으로 목록에서 새 목록을 만듭니다.
['US', 20, 'en', 'UK', 21, 'en', 'Fra', 23, 'fr']
위와 같은 3 개의 새로운 목록을 만드는 가장 효율적인 방법은 무엇입니까? 하나 (재미) 라인에서
['US', 'UK', 'Fra']
[20, 21, 23]
['en', 'en', 'fr']
는 :
>>> l = ['US', 20, 'en', 'UK', 21, 'en', 'Fra', 23, 'fr']
>>> lists = [[l[3*i+j] for i in range(0, int(len(l)/3))] for j in range(0, 3)]
>>> lists
[['US', 'UK', 'Fra'], [20, 21, 23], ['en', 'en', 'fr']]
당신은 lists[0]
, lists[1]
및 lists[2]
을해야합니다.
당신은 사용할 수 있습니다 numpy
인쇄
import numpy as np
DATA = ['US', 20, 'en', 'UK', 21, 'en', 'Fra', 23, 'fr']
x= np.array(DATA).reshape(3,len(DATA)/3).T.tolist()
print x[0]
print x[1]
print x[2]
['US', 'UK', 'Fra']
['20', '21', '23']
['en', 'en', 'fr']
이 가장 효율적인 방법이 아니다, 그러나 당신이 꽤 읽을 수 있도록 달성하기 위해 단계를 인수 한 조각을 사용할 수 있습니다 :
>>> l = ['US', 20, 'en', 'UK', 21, 'en', 'Fra', 23, 'fr']
>>> l[::3]
['US', 'UK', 'Fra']
>>> l[1::3]
[20, 21, 23]
>>> l[2::3]
['en', 'en', 'fr']
조각 및 목록 이해가 트릭을 수행해야합니다. 엄격하게 가능한 가장 효율적인 것은 아니지만 간결하고 읽기 쉽습니다.
data = ['US', 20, 'en', 'UK', 21, 'en', 'Fra', 23, 'fr']
result = [ data[i::3] for i in range(3) ]
나는 downvote하지 않았다. 그러나 질문은 아마 가상의 복제물이기 때문에 downvoted되었다. 즉, 질문하는 대신 대답을 제공하기 위해 광범위한 검색이 필요하지 않았을 것이다. – aestrivex
downvotes는 일반적으로 연구 부족의 결과입니다. 너 자신을 시험해보고 그 필요가 너무 느리다 고 결정 했니? – chepner
내가 아는 유일한 방법은 루프를 실행하고 새 목록을 얻는 것입니다. 나는 그것의 facepalm 질문을 짐작한다. 하지만 여전히 ... – richie