在论证中使用理解
Using comprehensions in arguments
考虑一下:
>>> set((x,y) for x in range(1,3) for y in range(1,3))
{(1, 1), (1, 2), (2, 1), (2, 2)}
但是,如果我只采用上面使用的论点:
>>> (x,y) for x in range(1,3) for y in range(1,3)
我得到SyntaxError
我的第一个电话 set
到底得到了什么?一个东西?一种表达?它们是不同的东西吗?
从技术上讲,set
需要 最多 1 个参数,所以我不明白第一个表达式是如何工作的,但第二个表达式却没有。
A generator expression 有外括号,但当它是函数的唯一参数时允许省略它们。在这种情况下省略外括号只不过是语法糖。
所以表达式:
set((x,y) for x in range(1,3) for y in range(1,3))
完全相同:
set(((x,y) for x in range(1,3) for y in range(1,3)))
考虑一下:
>>> set((x,y) for x in range(1,3) for y in range(1,3))
{(1, 1), (1, 2), (2, 1), (2, 2)}
但是,如果我只采用上面使用的论点:
>>> (x,y) for x in range(1,3) for y in range(1,3)
我得到SyntaxError
我的第一个电话 set
到底得到了什么?一个东西?一种表达?它们是不同的东西吗?
从技术上讲,set
需要 最多 1 个参数,所以我不明白第一个表达式是如何工作的,但第二个表达式却没有。
A generator expression 有外括号,但当它是函数的唯一参数时允许省略它们。在这种情况下省略外括号只不过是语法糖。
所以表达式:
set((x,y) for x in range(1,3) for y in range(1,3))
完全相同:
set(((x,y) for x in range(1,3) for y in range(1,3)))