2017-06-28 34 views
-1

我有数据列表:创造了许多列表的循环

data_list = [[1,2,3], [4,5,6], [7,8,9], ...] 

我想每个元素分配给一个单独的列表,以便:

Bin1 = [1,2,3] 
Bin2 = [4,5,6] 
.... 
Bin100 = [..,..,..] 

我不知道怎么样要做到这一点,而不是做手动的方式初始化列表1 1.试图寻找一个功能如何去做,但没有发现任何东西。

一旦我有列表初始化,我需要将数据从DATA_LIST追加:

for i in range(0, len(data_list)): 
    bin1.append(data_list[i][1]) 
    bin2.append(data_list[i][2]) 
    ....... 

再次,这样做的快捷方式会这么有用!

+1

你已经有了列表...在列表中!根本没有必要这样做。 'data_list [0]'基本上是'Bin1'(方括号中的不同值会给你不同的bin) – byxor

回答

1

可以简单的写下面的代码

l = [ [i,i+1,i+2] for i in range(1,YOUR_MAX_LENGTH,3) ] 

希望这有助于

+1

请注意1个字母的变量名。 'l'看起来像'I'和'1'和'|'。怎么样'my_list'什么的(因为我们真的不知道它代表什么)? – byxor

+0

耶@byxor,我只是举了一个例子。顺便说一句好评。 :) –

3

你可以使用字典,如果你想与一键访问列表类似"Bin1"

data_list = [[1,2,3], [4,5,6], [7,8,9]] 

d = {} 
for i, v in enumerate(data_list, 1): 
    d['Bin{}'.format(i)] = v 

print(d) # >>> {'Bin1': [1, 2, 3], 'Bin3': [7, 8, 9], 'Bin2': [4, 5, 6]} 

print(d['Bin1']) # >>> [1, 2, 3] 

或者使用词典理解:

d = {'Bin{}'.format(i): v for i,v in enumerate(data_list, 1)} 
+1

'枚举(data_list,1)'? – AChampion

+0

@AChampion好电话!我会更新我的答案。 – LeopoldVonBuschLight

1

使用字典理解,使列表的字典,请注意这使得副本:

data_list = [[1,2,3], [4,5,6], [7,8,9]] 

# To make copies 
separate_lists = {'bin'+str(i): sublist 
        for i,sublist in enumerate(data_list,1)} 

print (separate_lists) 

为了不复印一本字典,这应该工作:

# To remove sublists from data_list and put them in the dictionary 
separate_lists_not_copied = {} 
for i in range(1,len(data_list)+1): 
    separate_lists_not_copied['bin'+str(i)] = data_list.pop(0) 

print (separate_lists_not_copied) 

两个打印:

{'bin3': [7, 8, 9], 'bin1': [1, 2, 3], 'bin2': [4, 5, 6]} 
+1

轻微 - 您可以让'enumerate()'从'1'开始以避免'str(i + 1)'中的'+ 1',例如'枚举(data_list,1)',然后只是'str(i)' – AChampion

+0

@AChampion谢谢你的朋友 – citizen2077

+0

@AChampion我每天在这里学习新东西:> – citizen2077

0

使用locals()即时创建变量名并遍历所有子列表。

对于那些谁不知道这个功能:

更新,并返回来表示当前本地符号表的字典。

当在函数 块中调用自由变量时,由locals()返回,但不在类块中。

data_list = [[1,2,3], [4,5,6], [7,8,9]] 

for i, sublist in enumerate(data_list, 1): 
    locals()['bin_{}'.format(i)] = sublist 

print bin_1 # [1, 2, 3] 
print bin_3 # [7,8,9] 

注意:因为它是通过约定使用对Python类不要在变量名中使用大写。所以bin_1是一个比Bin1更好的名字