在Python中join一个数组中的两个列表
我想将excel文件的列join另一个excel文件的其他4列。
代码如下:
Array1 = [] Arraytest1 = [] Arraytest2 = [] with open('file.txt', 'r') as f: for line in f: List1 = line.split('\t')[:4] List2 = line.split('\t')[10] Arraytest1.append(List1) Arraytest2.append(List2) Arraytest1.extend(Arraytest2) print 'Array 1 :', Arraytest1
我在输出中看到的是:
数组1:[['A','B','C','D'],['E']]
arrays1:[['A','B','C','D'],'E',['X1','X1','X1','X1'],'E',Y1]
但是我是这样的:
数组1:['A','B','C','D','E']
数组1:['X1','X1','X1','X1','Y1']
数组1:['X2','X2','X2','X2','Y2']
等等..我会感谢您的帮助
List1 = line.split('\t')[:4]
已经使List1
成为一个列表。
Arraytest1.append(List1)
把这个列表放到ArrayTest1中,想想ArrayTest1 = [[List1's contents]]
然后,当你扩展它时,你将平铺一次,但是有一个嵌套列表,这就是为什么你看到结果。
尝试:
List1 = line.split('\t')[:4] List2 = line.split('\t')[10] Arraytest1.extend(List1) Arraytest2.extend(List2) Arraytest1.extend(Arraytest2) print 'Array 1 :', Arraytest1
或者你可以用下面的代替它:
Arraytest1 += List1 Arraytest2 += List2
我相信你知道,但append
将对象添加到列表中, extend
添加迭代中的每个对象。
附加:
x = [1,2,3] x.append([4,5]) #x is now [1,2,3,[4,5]]
延伸
x = [1,2,3] x.append([4,5]) #x is now [1,2,3,4,5] x.append(1) #throws error
Split返回一个列表…但有时如果你只是想分割一个string,只是施放它。
x = "hello" x = x.split() #x is now ['hello'] x = "hello" x = list(x) #x is now ['h', 'e', 'l', 'l', 'o']
分割语句通常是分割语句,Python中的string是可迭代的,所以你可以将它们转换成列表,将它们分割成每个字符。 我想这就是你想要的“
编辑:根据您的意见这是一个for循环问题:
你正在for循环添加到列表中,但似乎每次循环都需要一个新列表。 你不是用干净的replace列表,而是每次都附加到列表中。 尝试replace:
Arraytest1.extend(List1) Arraytest2.extend(List2)
太:
Arraytest1 = List1[:] Arraytest2 = List2[:]