使用Python,我有两个长度相同的列表,里面的每个数据都以相同的顺序相互关联。因此,我列出了如下列表:
a1=[0, 1, 1, 2]
a2=[o, x, o, o]
-> A=[(0,o), (1,x), (1,o), (2,o)]
后来,我找到了另一个我想添加的列表:
a3=[0,0,1,1]
虽然我可以通过调用前面的列表a1和a2来连接列表,但我想知道是否还有其他简单的方法只使用A和a2来连接它,因为如果有很多列表已经连接起来似乎很艰难这条路;我想要一种可以在未来轻松扩展的方法。
另外,如果在这种情况下制作列表列表不是最好的方法,我想知道我应该使用哪些其他结构。
答案 0 :(得分:3)
您可以使用Pandas轻松完成此操作。由于您的所有列表都具有相同的长度,因此您可以将每个列表视为Pandas DataFrame中的列。例如:
import pandas as pd
a1 = [0, 1, 1, 2]
a2 = [o, x, o, o]
A = pd.DataFrame({'a1': a1, 'a2': a2})
现在你有这样的事情:
a1 a2
0 0 o
1 1 x
2 1 o
3 2 o
您可以为其添加列:
a3 = [0,0,1,1]
A['a3'] = a3
第一个未命名的列是“索引”,因此您可以像这样使用它:
>>> print(A.loc[0])
0 o 0
您还可以访问特定列:
>>> print(A['a3'])
0 0 1 1
此解决方案比列表列表更有效,并且随着数据的增长将提供更快的性能。例如,您可以使用A['a1'].sum()
非常快速地对整个列求和,或者使用A['a1'] + A['a3']
添加列(提供0 1 2 3
)。
答案 1 :(得分:1)
这是一种简单的扩展A的方法:
对于每个新列表,将a3
替换为此表达式中的列表名称并运行它:
A = [A[i] + (a3[i],) for i in range(len(a3))]
答案 2 :(得分:1)
我的建议:
a1=[0,1,1,2]
a2=['o','x','o','o']
a3=[0,0,1,1]
def adjoin(*lists):
return [i for i in zip(*lists)]
# usage:
A= adjoin(a1,a2,a3)
# result: A -> [(0, '0', 0), (1, 'x', 0), (1, 'o', 1), (2, 'o', 1)]