我有这个嵌套列表:
l = [['40', '20', '10', '30'], ['20', '20', '20', '20', '20', '30', '20'], ['30', '20', '30', '50', '10', '30', '20', '20', '20'], ['100', '100'], ['100', '100', '100', '100', '100'], ['100', '100', '100', '100']]
现在,我想要做的是将列表中的每个元素转换为浮点数。我的解决方案是:
newList = []
for x in l:
for y in x:
newList.append(float(y))
但是,这可以使用嵌套列表理解来完成吗?
我所做的是:
[float(y) for y in x for x in l]
但结果是100的总和是2400。
任何解决方案,一个解释都是非常感谢的。谢谢!
发布于 2013-08-06 14:05:23
下面是如何使用嵌套列表理解来完成此操作:
[[float(y) for y in x] for x in l]
这将为您提供一个列表列表,类似于您开始时使用的列表,只是使用的是浮点型而不是字符串。如果你想要一个平面列表,那么你可以使用[float(y) for x in l for y in x]
。
发布于 2017-07-13 19:27:36
下面是如何将嵌套的for循环转换为嵌套的列表理解:
下面是嵌套列表理解的工作原理:
l a b c d e f
↓ ↓ ↓ ↓ ↓ ↓ ↓
In [1]: l = [ [ [ [ [ [ 1 ] ] ] ] ] ]
In [2]: for a in l:
...: for b in a:
...: for c in b:
...: for d in c:
...: for e in d:
...: for f in e:
...: print(float(f))
...:
1.0
In [3]: [float(f)
for a in l
...: for b in a
...: for c in b
...: for d in c
...: for e in d
...: for f in e]
Out[3]: [1.0]
对于您的情况,它将是这样的。
In [4]: new_list = [float(y) for x in l for y in x]
发布于 2013-08-06 14:04:59
>>> l = [['40', '20', '10', '30'], ['20', '20', '20', '20', '20', '30', '20'], ['30', '20', '30', '50', '10', '30', '20', '20', '20'], ['100', '100'], ['100', '100', '100', '100', '100'], ['100', '100', '100', '100']]
>>> new_list = [float(x) for xs in l for x in xs]
>>> new_list
[40.0, 20.0, 10.0, 30.0, 20.0, 20.0, 20.0, 20.0, 20.0, 30.0, 20.0, 30.0, 20.0, 30.0, 50.0, 10.0, 30.0, 20.0, 20.0, 20.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0]
https://stackoverflow.com/questions/18072759
复制相似问题