0

我怎样才能转变

list = [[68.0], [79.0], [6.0]],  ... [[176.0], [120.0], [182.0]]

进入

result = [68.0, 79.0, 6.0, 8.0], ... [176.0, 120.0, 182.0]
4

5 回答 5

1
z = []
for x in list:
    for i in x:
        z.append(i)
于 2013-05-21T15:06:43.080 回答
1

我错过了什么或简单的列表理解会做吗?并且也是listpython 中的一个关键字,请不要命名与 python 关键字冲突的变量。它会在你无法想象的地方咬你。

>>> mylist = [[68.0], [79.0], [6.0], [8.0], [61.0], [88.0], [59.0], [91.0]]
>>> [i[0] for i in mylist]
[68.0, 79.0, 6.0, 8.0, 61.0, 88.0, 59.0, 91.0] #this can be assigned to a new list var mylist1

更新:根据 lbe 所说,改变方法 -

>>> mylist =[[[68.0], [79.0], [6.0], [8.0], [61.0], [88.0], [59.0], [91.0]],
...        [[10.0], [11.0], [9.0], [120.0], [92.0], [12.0], [8.0], [13.0]],
...        [[17.0], [18.0], [13.0], [14.0], [12.0], [176.0], [120.0], [182.0]]]
>>> [i[0] for i in reduce(lambda x, y: x+y, mylist)]
[68.0, 79.0, 6.0, 8.0, 61.0, 88.0, 59.0, 91.0, 10.0, 11.0, 9.0, 120.0, 92.0, 12.0, 8.0, 13.0, 17.0, 18.0, 13.0, 14.0, 12.0, 176.0, 120.0, 182.0]
于 2013-05-21T15:07:25.613 回答
1

如果我已经正确理解了input_lists实际​​应该是什么样子,那么我认为您所追求的是创建一个 dict 以便这dict[n]是您的第 n 个列表。例如:以下代码:

input_lists = [[[68.0], [79.0], [6.0], [8.0], [61.0], [88.0], [59.0], [91.0]],
       [[10.0], [11.0], [9.0], [120.0], [92.0], [12.0], [8.0], [13.0]],
       [[17.0], [18.0], [13.0], [14.0], [12.0], [176.0], [120.0], [182.0]]]


lists = {i:[el[0] for el in v] for i, v in enumerate(input_lists, start=1)}
# {1: [68.0, 79.0, 6.0, 8.0, 61.0, 88.0, 59.0, 91.0], 2: [10.0, 11.0, 9.0, 120.0, 92.0, 12.0, 8.0, 13.0], 3: [17.0, 18.0, 13.0, 14.0, 12.0, 176.0, 120.0, 182.0]}
于 2013-05-21T15:09:32.980 回答
0

首先,上面的代码是无效的语法。您需要周围的括号或类似的东西。

可能性一:

list =[[[68.0], [79.0], [6.0], [8.0], [61.0], [88.0], [59.0], [91.0]],
       [[10.0], [11.0], [9.0], [120.0], [92.0], [12.0], [8.0], [13.0]],
       [[17.0], [18.0], [13.0], [14.0], [12.0], [176.0], [120.0], [182.0]]]

然后list[0]list[1]等参考子列表。

可能性二:

list =[[68.0], [79.0], [6.0], [8.0], [61.0], [88.0], [59.0], [91.0],
       [10.0], [11.0], [9.0], [120.0], [92.0], [12.0], [8.0], [13.0],
       [17.0], [18.0], [13.0], [14.0], [12.0], [176.0], [120.0], [182.0]]

也就是说,你想要一长串的大块。然后,只需使用切片语法,list[0:2][[68.0], [79.0], [6.0]].

于 2013-05-21T15:11:14.777 回答
0

假设您的数据看起来像在@JonClements 答案中一样,这是使用列表理解的另一种方法。

[reduce(lambda x, y: x + y, l) for l in input_lists]
# [[68.0, 79.0, 6.0, 8.0, 61.0, 88.0, 59.0, 91.0],
#  [10.0, 11.0, 9.0, 120.0, 92.0, 12.0, 8.0, 13.0],
#  [17.0, 18.0, 13.0, 14.0, 12.0, 176.0, 120.0, 182.0]]
于 2013-05-21T15:16:36.963 回答