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']
从列表中而不是直接创建它?
答案 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')]