2016-07-28 236 views
2

在Python中將列表轉換爲單獨元素的有效方法是什麼?將列表轉換爲行

我有一個看起來像這樣的數據集;

['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:]] 

這臺res[['StudentA', '80'], ['StudentA', '94'], ['StudentA', '93']]

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

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

如果它包含這些行的列表(all_students),你可以做你想做的,做:

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

這個字典解析會組你的數據由學生姓名:

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

即:

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

從您可以使用嵌套循環或列表理解提取單個對:

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