如何从列表中创建列表?

时间:2017-06-18 02:32:43

标签: python list

fp.readline()
for line in fp:
    line_lst = line.strip().split(',')

假设我在运行上面的代码后获得了一堆列表:

['a','b','c']['1','2','3']['A','B','C']

我怎样才能获得另一个名单

['a','1','A']['b','2','B']['c','3','C'] 

从列表中而不是直接创建它?

5 个答案:

答案 0 :(得分:2)

您可以使用

all_list = [['a','b','c'],['1','2','3'],['A','B','C']]
result = [x[0] for x in all_list]
print(result)

这在Python中称为 list comprehension

根据您的需要,您应该在此使用 zip 功能,link由@ Arc676提供。

all_list = [['a','b','c'],['1','2','3'],['A','B','C']]
# result = list(zip(all_list[0], all_list[1], all_list[2]))
# if you have more list in all_list, you could use this
result = list(zip(*all_list))
print(result)

答案 1 :(得分:2)

假设所有列表都有相同数量的元素

my_lists = [my_list_1, my_list2, ...]
for i in xrange(len(my_lists[0])):
    print [l[i] for l in my_lists]

一个例子......

>>> my_lists = [['a','b','c'],['1','2','3'],['A','B','C']]
>>> for i in xrange(len(my_lists[0])):
...     print [l[i] for l in my_lists]
... 
['a', '1', 'A']
['b', '2', 'B']
['c', '3', 'C']

答案 2 :(得分:0)

您可以尝试下面的内容。

var aggregateList = line_lst.map(function (value) { return value[0]; });

编辑:哎呀,以为我在javascript部分,对于python:

aggregateList = map(lambda value: value[0], line_lst)

答案 3 :(得分:0)

这应该这样做......但它实际上只是从每个列表中获取第一项,所以我不确定它是否正是您想要的

new_list = []
for sub_list in line_lst:
    new_list.append(sub_list[0])

你也可以这样做(我更喜欢)

new_list = [sub_list[0] for sub_list in line_lst]

答案 4 :(得分:0)

只需:

zip(['a','b','c'], ['1','2','3'], ['A','B','C'])

给出了:

  

[('a','1','A'),('b','2','B'),('c','3','C')]