我有这个嵌套列表:
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']]
Run Code Online (Sandbox Code Playgroud)
现在,我想要做的是将列表中的每个元素转换为float.我的解决方案是:
newList = []
for x in l:
for y in x:
newList.append(float(y))
Run Code Online (Sandbox Code Playgroud)
但这可以使用嵌套列表理解来完成,对吗?
我所做的是:
[float(y) for y in x for x in l]
Run Code Online (Sandbox Code Playgroud)
但结果是一堆100的总和2400.
任何解决方案,将非常感谢解释.谢谢!
我有一个包含嵌套列表的列表,其中包含元组.该列表如下所示:
428 [(' whether', None), (' mated', None), (' rooster', None), ('', None)]
429 [(' produced', None), (' without', None), (' rooster', None), (' infertile', None), ('', None)]
Run Code Online (Sandbox Code Playgroud)
我希望能够按索引值访问元组的"None"元素.我想创建一个具有相同索引值的新列表,如下所示:
428 [(None, None, None, None)]
429 [(None, None, None, None, None)]
Run Code Online (Sandbox Code Playgroud)
我真的不在乎"无"的类型.我只想将它们作为一个单独的列表.
我已经尝试过列表推导,但我只能自己检索元组,而不是里面的元素.
任何帮助,将不胜感激.
在appengine应用程序中,我想为对象列表构建一组所有属性名称.这应该是相当简单的:
users = security.User.all().fetch(1000)
props = set([k for k in u.properties().keys() for u in users])
Run Code Online (Sandbox Code Playgroud)
但是,上面的代码会导致错误:
File "/Users/paulkorzhyk/Projects/appengine-flask-template/app/app.py", line 70, in allusers
props = set([k for k in u.properties().keys() for u in users])
UnboundLocalError: local variable 'u' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
在调试器中进行了一些实验后,我注意到添加虚拟表达式修复了代码:
users = security.User.all().fetch(1000)
[u.properties().keys() for u in users]
props = set([k for k in u.properties().keys() for u in users])
Run Code Online (Sandbox Code Playgroud)
这对我来说非常违反直觉,为什么原始版本在Python 2.7中失败?为什么在中间添加一个"无用的"表达式来修复问题?
嵌套 for 循环(在本例中为双 for 循环)如何创建 2D 列表。
例如,我想要一个 2x2 矩阵,每个元素都用 0 进行初始化。
我懂了:
x = [[0 for i in range(row)] for j in range(col)]
Run Code Online (Sandbox Code Playgroud)
其中 row 定义为矩阵中的行数,col 定义为矩阵中的列数。在本例中,行 = 2,列 = 2。
当我们打印 x 时:
print(x)
Run Code Online (Sandbox Code Playgroud)
我们将得到:
[[0, 0], [0, 0]]
Run Code Online (Sandbox Code Playgroud)
这就是我们想要的。
这背后的逻辑是什么?是[0 for i in range(row)]说,对于指定行号范围内的每个元素,我们将分配一个 0 来有效地创建矩阵中的第一行?
那么for j in range(col)是不是说我们根据指定的列号重复创建这个列表,以有效地创建更多的行,这些行最终成为列?
我应该如何从左到右阅读这段代码片段?
在python2.7中,我试图将字符串列表中的每个项目添加到另一个项目中(例如,在列表['b','c']中的每个项目之前添加项目'a').从如何在列表推导中添加列表列表,我已经确定了正确的命令,其归结为:
>>> [i for x in ['b', 'c'] for i in ['a', x]]
['a', 'b', 'a', 'c']
Run Code Online (Sandbox Code Playgroud)
纯粹基于临时i和x变量,下面的版本似乎更具可读性.但是,它给出了完全不同的结果.为什么这不会给出相同的结果?
>>> [i for i in ['a', x] for x in ['b', 'c']]
['a', 'a', 'c', 'c']
Run Code Online (Sandbox Code Playgroud)
更奇怪的是,'b'条目发生了什么?
我正在尝试使用列表理解从2个列表中创建一个新列表
>>> l = ['%sdummy1', '%sdummy2']
>>> z = ['new1', 'new2']
Run Code Online (Sandbox Code Playgroud)
有了基本的列表理解知识,我可以获得以下列表
>>> x = [item % 'new1' for item in l]
['new1dummy1', 'new1dummy2']
>>>
Run Code Online (Sandbox Code Playgroud)
但是我如何遍历“ z”并获得下面的列表?
['new1dummy1', 'new1dummy2', 'new2dummy1', 'new2dummy2']
Run Code Online (Sandbox Code Playgroud)