在python中将一个数组中的两个列表连接起来

时间:2016-11-11 15:59:50

标签: python arrays excel list arraylist

我想将excel文件的列加入另一个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']]

     

数组1:[['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']

等等.. 我将非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

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在iterable中添加了每个对象。

附加:

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会返回一个列表...但有时候如果你只是想拆分一个字符串而只是强制转换它。

x = "hello"
x = x.split()
#x is now ['hello']

x = "hello"
x = list(x)
#x is now ['h', 'e', 'l', 'l', 'o']

分裂句子通常是分裂,Python中的字符串是可迭代的,因此您可以将它们转换为列表以将它们分成每个字符。我认为这就是你想要的'

编辑:根据您的评论,这是一个for循环问题:

您正在追加添加到列表中的for循环,但似乎每次循环时都需要一个新列表。您没有用干净的列表替换列表,而只是每次都附加到列表中。尝试更换:

Arraytest1.extend(List1)
Arraytest2.extend(List2)

太:

Arraytest1 = List1[:]
Arraytest2 = List2[:]