首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在嵌套列表上的列表理解?

在嵌套列表上的列表理解?
EN

Stack Overflow用户
提问于 2013-08-06 14:02:44
回答 11查看 191.3K关注 0票数 285

我有这个嵌套列表:

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。

任何解决方案,一个解释都是非常感谢的。谢谢!

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 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]

票数 397
EN

Stack Overflow用户

发布于 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]
票数 287
EN

Stack Overflow用户

发布于 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]
票数 55
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18072759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档