在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[:]