标签: list-comprehension

如何将元组列表解压缩到单个列表中?

可能重复:
Python中的转置/解压缩功能

我有一个元组列表,我想将这个列表解压缩到两个独立的列表中.我正在寻找Python中的一些标准化操作.

>>> l = [(1,2), (3,4), (8,9)]
>>> f_xxx (l)
[ [1, 3, 8], [2, 4, 9] ] 
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种简洁和pythonic的方法来实现这一目标.

基本上,我正在寻找zip()函数的逆运算.

python tuples list-comprehension list

219
推荐指数
2
解决办法
17万
查看次数

列表理解中的双重迭代

在Python中,您可以在列表推导中使用多个迭代器,例如

[(x,y) for x in a for y in b]
Run Code Online (Sandbox Code Playgroud)

对于一些合适的序列a和b.我知道Python列表推导的嵌套循环语义.

我的问题是:理解中的一个迭代器可以指向另一个吗?换句话说:我可以这样:

[x for x in a for a in b]
Run Code Online (Sandbox Code Playgroud)

外循环的当前值是内部的迭代器?

例如,如果我有一个嵌套列表:

a=[[1,2],[3,4]]
Run Code Online (Sandbox Code Playgroud)

列表理解表达式将实现此结果:

[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

?? (请仅列出理解答案,因为这是我想要找到的).

python list-comprehension

202
推荐指数
9
解决办法
14万
查看次数

在嵌套列表上列出理解?

我有这个嵌套列表:

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.

任何解决方案,将非常感谢解释.谢谢!

python nested list-comprehension list

194
推荐指数
6
解决办法
14万
查看次数

是否可以在python列表理解中使用'else'?

这是我试图变成列表理解的代码:

table = ''
for index in xrange(256):
    if index in ords_to_keep:
        table += chr(index)
    else:
        table += replace_with
Run Code Online (Sandbox Code Playgroud)

有没有办法将else语句添加到此理解中?

table = ''.join(chr(index) for index in xrange(15) if index in ords_to_keep)
Run Code Online (Sandbox Code Playgroud)

python list-comprehension

190
推荐指数
4
解决办法
10万
查看次数

将迭代器转换为列表的最快方法

有一个iterator对象,有没有比列表理解更快,更好或更正确的东西来获取迭代器返回的对象列表?

user_list = [user for user in user_iterator]
Run Code Online (Sandbox Code Playgroud)

python iterator list-comprehension

165
推荐指数
3
解决办法
8万
查看次数

从类定义中的列表推导中访问类变量

如何从类定义中的列表推导中访问其他类变量?以下适用于Python 2但在Python 3中失败:

class Foo:
    x = 5
    y = [x for i in range(1)]
Run Code Online (Sandbox Code Playgroud)

Python 3.2给出了错误:

NameError: global name 'x' is not defined
Run Code Online (Sandbox Code Playgroud)

尝试Foo.x也不起作用.有关如何在Python 3中执行此操作的任何想法?

一个稍微复杂的激励示例:

from collections import namedtuple
class StateDatabase:
    State = namedtuple('State', ['name', 'capital'])
    db = [State(*args) for args in [
        ['Alabama', 'Montgomery'],
        ['Alaska', 'Juneau'],
        # ...
    ]]
Run Code Online (Sandbox Code Playgroud)

在这个例子中,apply()本来是一个不错的解决方法,但它遗憾地从Python 3中删除.

python scope list-comprehension python-3.x python-internals

152
推荐指数
3
解决办法
2万
查看次数

单行列表理解:if-else变体

它更多的是关于python列表理解语法.我有一个列表理解,可以生成给定范围的奇数列表:

[x for x in range(1, 10) if x % 2]
Run Code Online (Sandbox Code Playgroud)

这是一个过滤器 - 我有一个源列表,我删除偶数(if x % 2).我想在这里使用if-then-else之类的东西.以下代码失败:

>>> [x for x in range(1, 10) if x % 2 else x * 100]
  File "<stdin>", line 1
    [x for x in range(1, 10) if x % 2 else x * 100]
                                         ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

有一个像if-else的python表达式:

1 if 0 is 0 else 3
Run Code Online (Sandbox Code Playgroud)

如何在列表理解中使用它?

python list-comprehension ternary-operator conditional-operator

150
推荐指数
4
解决办法
25万
查看次数

列表推导和功能函数是否比"for loops"更快?

在Python的性能方面,是一个列表理解,还是比for循环更快的map(),filter()和reduce()等函数?从技术上讲,为什么它们"以C速度运行",而"for循环以python虚拟机速度运行"?

假设在我正在开发的游戏中,我需要使用for循环绘制复杂且巨大的地图.这个问题肯定是相关的,因为如果列表理解确实更快,那么为了避免滞后(尽管代码的视觉复杂性),这将是一个更好的选择.

python performance for-loop list-comprehension map-function

130
推荐指数
7
解决办法
7万
查看次数

从csv文件创建字典?

我正在尝试从csv文件创建一个字典.csv文件的第一列包含唯一键,第二列包含值.csv文件的每一行代表字典中唯一的键值对.我试图使用csv.DictReadercsv.DictWriter类,但我只能弄清楚如何为每一行生成一个新的字典.我想要一本字典.这是我尝试使用的代码:

import csv

with open('coors.csv', mode='r') as infile:
    reader = csv.reader(infile)
    with open('coors_new.csv', mode='w') as outfile:
    writer = csv.writer(outfile)
    for rows in reader:
        k = rows[0]
        v = rows[1]
        mydict = {k:v for k, v in rows}
    print(mydict)
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,我得到了一个ValueError: too many values to unpack (expected 2).如何从csv文件创建一个字典?谢谢.

python csv dictionary list-comprehension

125
推荐指数
10
解决办法
32万
查看次数

Python使用枚举内部列表理解

让我们假设我有一个这样的列表:

mylist = ["a","b","c","d"]
Run Code Online (Sandbox Code Playgroud)

要获得打印的值及其索引,我可以enumerate像这样使用Python的函数

>>> for i,j in enumerate(mylist):
...     print i,j
...
0 a
1 b
2 c
3 d
>>>
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试在里面使用它时,list comprehension它给了我这个错误

>>> [i,j for i,j in enumerate(mylist)]
  File "<stdin>", line 1
    [i,j for i,j in enumerate(mylist)]
           ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:在列表理解中使用枚举的正确方法是什么?

python iteration list-comprehension list

116
推荐指数
6
解决办法
23万
查看次数