在Python中使用for循环将数字列表添加到空列表中

在Python中使用for循环将数字列表添加到空列表中,python,pandas,Python,Pandas,最近遇到了一堵墙,虽然事情有些简单,但无论怎样我都无法解决它。 我创建了一个小函数,它计算一些值并返回一个列表作为输出值 def calc(file): #some calculation based on file return degradation #as a list 例如,对于文件“data1.txt” 对于文件“data2.txt” 由于我有几个文件要应用calc(),所以我希望它们横向连接,以便将它们连接到一个数组中,该数组的行数和列数与我的文件数一样多。我们计

最近遇到了一堵墙,虽然事情有些简单,但无论怎样我都无法解决它。 我创建了一个小函数,它计算一些值并返回一个列表作为输出值

def calc(file):
    #some calculation based on file
    return degradation #as a list 
例如,对于文件“data1.txt”

对于文件“data2.txt”

由于我有几个文件要应用calc(),所以我希望它们横向连接,以便将它们连接到一个数组中,该数组的行数和列数与我的文件数一样多。我们计划用
for
循环来完成它

对于这种特殊情况,如下所示:

output = 1 , 1
         0.9,0.8
         0.8,0.6
         0.5,0.2
也尝试过熊猫,但没有成功

import numpy as np

arr2d = np.array([[1, 2, 3, 4]])
arr2d = np.append(arr2d, [[9, 8, 7, 6]], axis=0).T
预期输出如下所示:

array([[1, 9],
       [2, 8],
       [3, 7],
       [4, 6]])

您可以使用
numpy.hstack()
来实现这一点。 假设您拥有来自for循环前两次迭代的前两个文件的数据。 data1.txt为您提供

degradation1 = [1,0.9,0.8,0.5]
degradation2 = [1,0.8,0.6,0.2]
data2.txt为您提供

degradation1 = [1,0.9,0.8,0.5]
degradation2 = [1,0.8,0.6,0.2]
首先,必须将两个列表转换为列表列表

degradation1 = [[i] for i in degradation1]
degradation2 = [[i] for i in degradation2]
这给出了输出

print(degradation1)
print(degradation2)

[[1], [0.9], [0.8], [0.5]]
[[1], [0.8], [0.6], [0.2]]
现在,您可以使用
numpy.hstack()
来堆叠数据

这给出了输出

array([[1. , 1. ],
       [0.9, 0.8],
       [0.8, 0.6],
       [0.5, 0.2]])
array([[1. , 1. , 1. ],
       [0.9, 0.8, 0.3],
       [0.8, 0.6, 0.6],
       [0.5, 0.2, 0.4]])
假设您在for循环的第三次迭代中有一个文件data3.text,它给出

degradation3 = [1,0.3,0.6,0.4]
您可以按照上面相同的步骤将其堆叠为
stacked
。遵循以下步骤;转换为列表列表,用
堆叠的
堆叠

degradation3 = [[i] for i in degradation3]
stacked = numpy.hstack(stacked,degradation3)
这将为您提供输出

array([[1. , 1. ],
       [0.9, 0.8],
       [0.8, 0.6],
       [0.5, 0.2]])
array([[1. , 1. , 1. ],
       [0.9, 0.8, 0.3],
       [0.8, 0.6, 0.6],
       [0.5, 0.2, 0.4]])

您可以在整个循环中继续此操作。

假设
my\u list
是您的列表列表


我的清单=[
[1, 2, 3, 4],
[10, 20, 30, 40],
[100, 200, 300, 400]]
结果=[]
对于my_列表[0]中的u:
结果。追加([]))
对于my_列表中的l:
对于范围内的i(len(result)):
结果[i]。追加(l[i])
对于行输入结果:
打印(行)
输出将是

[1, 10, 100]
[2, 20, 200]
[3, 30, 300]
[4, 40, 400]

因为你似乎想处理列表

## degradations as list
degradation1 = [1,0.8,0.6,0.2]
degradation2 = [1,0.9,0.8,0.5]
degradation3 = [0.7,0.9,0.8,0.5]

degradations = [degradation1, degradation2, degradation3]

## CORE OF THE ANSWER ##
degradationstransposed = [list(i) for i in zip(*degradations)]

print(degradationstransposed)
[[1, 1, 0.7], [0.8, 0.9, 0.9], [0.6, 0.8, 0.8], [0.2, 0.5, 0.5]]

似乎你正在寻找的是一个numpy矩阵。