创建许多列表的循环

时间:2017-06-28 13:53:49

标签: python

我有一个数据列表:

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])
     .......

同样,这样做的快捷方式非常有用!

4 个答案:

答案 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_1Bin1

更好