2013-06-26 55 views
-1

正如標題所說,我試圖用Python動態地命名列表。代碼的目的是在連續的字母周圍創建列表。這裏是我的代碼:在Python中動態命名列表

consecutive_duplicates=["a","a","a","a","b","c","c","a","a","d","e","e","e","e","X"] 

count=0 
name=0 

for i in consecutive_duplicates: 
    if consecutive_duplicates[count]==consecutive_duplicates[count+1] or 
       consecutive_duplicates[count]==consecutive_duplicates[count-1]: 
     consecutive_duplicates[name].append(i) 
     count=count+1 
    else: 
     consecutive_duplicates[name+1].append(i) 
     name=name+1 

我不知道如何命名列表。顯然這不起作用。什麼會使它工作?

我在定義動態列表時也遇到了問題。我應該怎麼做?

+1

什麼是你所期望的輸出? –

+0

我的預期輸出是一系列包含連續字母的列表。然後我會把它們變成一個單子。 – KSHMR

+1

請將您的「問題」限制爲每個帖子只有1個問題。另外 - 你有沒有考慮過使用字典? –

回答

2

您可以使用itertools.groupby

>>> from itertools import groupby 
>>> lis = ["a","a","a","a","b","c","c","a","a","d","e","e","e","e","X"] 
>>> [list(g) for k,g in groupby(lis)] 
[['a', 'a', 'a', 'a'], ['b'], ['c', 'c'], ['a', 'a'], ['d'], ['e', 'e', 'e', 'e'], ['X']] 

,而是創建動態變量,它更好地使用字典的:

>>> dic = { 'lis'+str(i): list(g) for i,(k,g) in enumerate(groupby(lis), 1)} 
>>> dic['lis1'] 
['a', 'a', 'a', 'a'] 
>>> dic['lis2'] 
['b']