我有一个数据列表:
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])
.......
同样,这样做的快捷方式非常有用!
答案 0 :(得分: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 :(得分:1)
你可以简单地写下面的代码
l = [ [i,i+1,i+2] for i in range(1,YOUR_MAX_LENGTH,3) ]
希望这会有所帮助
答案 2 :(得分: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]}
答案 3 :(得分: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