标签: list-comprehension

在Python中创建一个包含列表推导的字典

我喜欢Python列表理解语法.

它也可以用来创建字典吗?例如,通过迭代成对的键和值:

mydict = {(k,v) for (k,v) in blah blah blah}  # doesn't work
Run Code Online (Sandbox Code Playgroud)

python dictionary list-comprehension dictionary-comprehension

1216
推荐指数
12
解决办法
80万
查看次数

if/else在Python的列表理解中?

如何在Python中执行以下操作?

row = [unicode(x.strip()) for x in row if x is not None else '']
Run Code Online (Sandbox Code Playgroud)

实质上:

  1. 用空字符串替换所有Nones,然后
  2. 执行功能.

python list-comprehension

791
推荐指数
8
解决办法
65万
查看次数

列表理解与地图

是否有理由更喜欢使用map()超过列表理解,反之亦然?它们中的任何一个通常比另一个更有效或被认为是更加pythonic?

python list-comprehension map-function

680
推荐指数
8
解决办法
19万
查看次数

在Python中创建单项重复n次的列表

我知道列表理解会做到这一点,但我想知道是否有更短(和更多Pythonic?)的方法.

我想创建一系列不同长度的列表.每个列表将包含相同的元素e,重复n次(其中n =列表的长度).如何创建列表,而不做

__PRE__

对于每个清单?

python list-comprehension multiplication replicate

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

如果列表中的其他理解

我有一个清单l:

l = [22, 13, 45, 50, 98, 69, 43, 44, 1]
Run Code Online (Sandbox Code Playgroud)

对于45以上的数字,我想加1; 对于小于它的数字,5.

我试过了

[x+1 for x in l if x >= 45 else x+5]
Run Code Online (Sandbox Code Playgroud)

但它给了我一个语法错误.我怎样才能实现if- else在列表理解这样吗?

python if-statement list-comprehension list

398
推荐指数
8
解决办法
46万
查看次数

生成器表达式与列表理解

什么时候应该使用生成器表达式?什么时候应该在Python中使用列表推导?

# Generator expression
(x*2 for x in range(256))

# List comprehension
[x*2 for x in range(256)]
Run Code Online (Sandbox Code Playgroud)

python list-comprehension generator

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

在Python中展平浅层列表

是否有一种简单的方法可以使用列表推导来展平迭代列表,或者失败,你会认为什么是平衡这样的浅层列表,平衡性能和可读性的最佳方法?

我尝试使用嵌套列表理解来压缩这样的列表,如下所示:

[image for image in menuitem for menuitem in list_of_menuitems]
Run Code Online (Sandbox Code Playgroud)

但我在NameError那里遇到麻烦,因为name 'menuitem' is not defined.谷歌搜索并浏览Stack Overflow后,我得到了一个reduce声明所需的结果:

reduce(list.__add__, map(lambda x: list(x), list_of_menuitems))
Run Code Online (Sandbox Code Playgroud)

但是这个方法相当难以理解,因为我需要那个list(x)调用,因为x是一个Django QuerySet对象.

结论:

感谢所有为此问题做出贡献的人.以下是我学到的内容摘要.我也将其作为社区维基,以防其他人想要添加或更正这些观察结果.

我原来的reduce语句是多余的,用这种方式编写得更好:

>>> reduce(list.__add__, (list(mi) for mi in list_of_menuitems))
Run Code Online (Sandbox Code Playgroud)

这是嵌套列表理解的正确语法(Brilliant summary dF!):

>>> [image for mi in list_of_menuitems for image in mi]
Run Code Online (Sandbox Code Playgroud)

但这些方法都不如使用效率高itertools.chain:

>>> from itertools import chain
>>> list(chain(*list_of_menuitems))
Run Code Online (Sandbox Code Playgroud)

正如@cdleary指出的那样,通过使用chain.from_iterable如下所示来避免*操作符魔术可能是更好的风格:

>>> chain = itertools.chain.from_iterable([[1,2],[3],[5,89],[],[6]])
>>> print(list(chain))
>>> [1, 2, …
Run Code Online (Sandbox Code Playgroud)

python list-comprehension

382
推荐指数
10
解决办法
17万
查看次数

Python字典理解

是否可以在Python中创建字典理解(用于键)?

没有列表推导,你可以使用这样的东西:

l = []
for n in range(1, 11):
    l.append(n)
Run Code Online (Sandbox Code Playgroud)

我们可以将其缩短为列表理解:l = [n for n in range(1, 11)].

但是,假设我想将字典的键设置为相同的值.我可以:

d = {}
for n in range(1, 11):
     d[n] = True # same value for each
Run Code Online (Sandbox Code Playgroud)

我试过这个:

d = {}
d[i for i in range(1, 11)] = True
Run Code Online (Sandbox Code Playgroud)

不过,我得到一个SyntaxErrorfor.

另外(我不需要这部分,但只是想知道),你能否将字典的键设置为一堆不同的值,如下所示:

d = {}
for n in range(1, 11):
    d[n] = n
Run Code Online (Sandbox Code Playgroud)

字典理解是否可以实现?

d = {}
d[i for i in range(1, 11)] = [x for …
Run Code Online (Sandbox Code Playgroud)

python dictionary list-comprehension

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

为什么Python中没有元组理解?

众所周知,有列表理解,比如

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

并且有字典理解,比如

{i:j for i, j in {1: 'a', 2: 'b'}.items()}
Run Code Online (Sandbox Code Playgroud)

(i for i in (1, 2, 3))
Run Code Online (Sandbox Code Playgroud)

将最终成为一个发电机,而不是tuple理解.这是为什么?

我的猜测是a tuple是不可变的,但这似乎不是答案.

python tuples list-comprehension dictionary-comprehension set-comprehension

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

Python在列表中选择最长字符串的最有效方法是什么?

我有一个变量长度列表,我试图找到一种方法来测试当前正在评估的列表项是否是列表中包含的最长字符串.我正在使用Python 2.6.1

例如:

mylist = ['abc','abcdef','abcd']

for each in mylist:
    if condition1:
        do_something()
    elif ___________________: #else if each is the longest string contained in mylist:
        do_something_else()
Run Code Online (Sandbox Code Playgroud)

我是蟒蛇新手,我敢肯定我只是一个大脑放屁.当然有一个简单的列表理解,我忽略了它的简短和优雅?

谢谢!

python list-comprehension list

220
推荐指数
3
解决办法
16万
查看次数