相关疑难解决方法(0)

为什么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万
查看次数

列表理解与生成器表达式的奇怪时间结果?

我正在回答这个问题,我更喜欢这里的生成器表达并使用它,我认为它会更快,因为生成器不需要先创建整个列表:

>>> lis=[['a','b','c'],['d','e','f']]
>>> 'd' in (y for x in lis for y in x)
True
Run Code Online (Sandbox Code Playgroud)

Levon在他的解决方案中使用了列表理解,

>>> lis = [['a','b','c'],['d','e','f']]
>>> 'd' in [j for i in mylist for j in i]
True
Run Code Online (Sandbox Code Playgroud)

但是当我做这些LC的时间结果比生成器快时:

~$ python -m timeit -s "lis=[['a','b','c'],['d','e','f']]" "'d' in (y for x in lis for y in x)"
    100000 loops, best of 3: 2.36 usec per loop
~$ python -m timeit -s "lis=[['a','b','c'],['d','e','f']]" "'d' in [y for x in lis for y …
Run Code Online (Sandbox Code Playgroud)

python list-comprehension list generator-expression timeit

34
推荐指数
3
解决办法
4605
查看次数