2016-07-28 2 views
2

목록을 파이썬의 개별 요소로 변환하는 효율적인 방법은 무엇입니까?목록을 행으로 변환

다음과 같은 데이터 세트가 있습니다.

['StudentA','80','94','93'] 
['StudentB','93','94'] 

각 학생/점수에 고유 한 행이 있도록 데이터를 재구성하고 싶습니다.

['StudentA','80'] 
['StudentA','94'] 
etc... 
+0

데이터 집합에 이미 여러 행이 있습니다. – Learner

+0

지금까지 어떤 시도를 했습니까? 학생 이름이 항상 목록의 첫 번째 요소가됩니까? –

+0

세트가 이렇게 보일 수 있습니까? ''[ '80', 'StudentA', '94', '93']'' – abhi

답변

3

는이 같은 지능형리스트를 사용할 수 있습니다

data = ['StudentA','80','94','93'] 
res = [[data[0], x] for x in data[1:]] 

[['StudentA', '80'], ['StudentA', '94'], ['StudentA', '93']]res을 설정합니다. 그것은이 라인을 각각 포함하는 목록 (all_students를)한다면

1
c=['StudentA','80','94','93'] 

    d=[[c[0], p] for p in c[1:]] 
0

, 당신은 수행하여, 당신이 원하는 것을 할 수있는 :

result = [] 
for student in all_students: 
    student_name = student[0] 
    result.extend([[student_name, value] for value in student[1:]] 
print(result) 
+0

당신은'sudent [1 :]'에서 't'를 놓쳤습니다; 예제를 오류없이 실행되도록 수정할 수 있습니다. – Aurora0001

0

커플 학생를 그것의 각각의 데이터dictionary를 사용하여.

def to_dict(l): 
    d = {} 
    for i in l: 
     key = i[0] 
     value = i[1:] 
     d[key] = value 
    return d  

샘플 출력 :

l = [['studentA', 90, 90],['studentB', 78, 40]] 
print to_dict(l) 
>>> {'studentB': [78, 40], 'studentA': [90, 90]} 
for key, value in d.iteritems(): 
    for i in value: 
     print key, i 
>>> studentB 78 
>>> studentB 40 
>>> studentA 90 
>>> studentA 90 
0

이 DICT 이해 것입니다 학생 이름으로 그룹을 사용하면 데이터 :

d = {x[0]: x[1:] for x in dataset} 

즉 :

>>> d 
{'StudentA': ['80', '94', '93'], 'StudentB': ['93', '94']} 

에서 중첩 된 for 루프 또는 목록 이해를 사용하여 개별 쌍을 추출 할 수 있습니다.

>>> [(k, w) for k, v in d.items() for w in v] 
[('StudentA', '80'), ('StudentA', '94'), ('StudentA', '93'), ('StudentB', '93'), ('StudentB', '94')]