我要打开列表清单
lst1 = [[0.0 , 0.588, 0.639, 0.732, 0.484, 1.0],
[0.0 , 0.319, 0.688, 0.905, 0.451, 1.0],
[0.0 , 0.817, 0.653, 0.743, 0.625, 1.0],
[0.0 , 0.667, 0.019, 0.837, 0.386, 1.0],
[0.177, 0.321, 0.0 , 0.016, 0.125, 1.0],
[0.067, 1.0 , 0.277, 0.0 , 0.979]]
进入此列表列表
lst2 = [[0.0 , 0.0 , 0.0 , 0.0 , 0.177, 0.067],
[0.588, 0.319, 0.817, 0.667, 0.321, 1.0 ],
[0.639, 0.688, 0.653, 0.019, 0.0 , 0.277],
[0.732, 0.905, 0.743, 0.837, 0.016, 0.0 ],
[0.484, 0.451, 0.625, 0.386, 0.125, 0.979]]
使用此代码
lst1 = [[(x-min(l))/(max(l)-min(l)) for x in l] for l in col_list_filter]
lst2 = [list(items) for items in zip(*norm_col_list)]
col_list_filter只是规范化之前的原始列表。
第一个列表包含6个列表,第二个列表包含5个,我还需要第二个列表也显示6个。我猜想这与第一个列表中的最后一个列表只有5个值,而其余的只有6个。
此数据最初是从csv文件导入的,具有一些空白值,这些值被转换为None并在对数据进行规范化时将其删除(因为它在0.0-1.0以上),因为将其保存在其中会一直导致错误,因此没有必要对于计算,我将在以后的步骤中进行。
答案 0 :(得分:2)
实际上,第一个笑声有6个列表,第二个笑声有5个列表,我需要第二个 清单也显示6。我猜想它与最后一个列表有关 第一个笑声只有5个值,其余的只有6个。
zip
仅在最短列表中才会拉在一起。如果您也需要保留更长的列表,请按照文档中的建议使用itertools.zip_longest
。
>>> list_of_lists = [[1, 2, 3],
... [4, 5, 6],
... [7, 8]]
>>> [list(l) for l in zip(*list_of_lists)]
[[1, 4, 7], [2, 5, 8]]
>>> from itertools import zip_longest
>>> [list(l) for l in zip(*list_of_lists)]
[[1, 4, 7], [2, 5, 8], [3, 6, None]
>>> [list(l) for l in zip(*list_of_lists, fillvalue=0.0)]
[[1, 4, 7], [2, 5, 8], [3, 6, 0.0]
或者,值得研究一些流行的Python处理数据的软件包,例如pandas
或numpy
。
我个人最熟悉numpy:
>>> import numpy as np
>>> list_of_lists = np.array([[1, 2, 3],
... [4, 5, 6],
... [7, 8, 0]])
>>> X = list_of_lists.T
>>> X
array([[1, 4, 7],
[2, 5, 8],
[3, 6, 0]])
>>> X*3 + 10
array([[13, 22, 31],
[16, 25, 34],
[19, 28, 37]])