Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表理解和迭代器带来的小麻烦_Python - Fatal编程技术网

Python 列表理解和迭代器带来的小麻烦

Python 列表理解和迭代器带来的小麻烦,python,Python,有没有一种方法可以用这种方式写出下面的表达式 我不会重复变量两次?这很烦人 当你不得不写多次的时候 ['hello {} {}'.format(A,B) for A,B in product(As,Bs)] 这正是你为for循环所要做的,不是吗?无论如何,您可以使用地图: map(lambda x:'hello {} {}'.format(*x), product(As,Bs)] 我现在意识到参数扩展*x语法可能也会缩短您上面编写的内容(仅一个变量)。如果您打算应用someFormatStr

有没有一种方法可以用这种方式写出下面的表达式 我不会重复变量两次?这很烦人 当你不得不写多次的时候

['hello {} {}'.format(A,B) for A,B in product(As,Bs)]

这正是你为
for
循环所要做的,不是吗?无论如何,您可以使用地图:

map(lambda x:'hello {} {}'.format(*x), product(As,Bs)]
我现在意识到参数扩展
*x
语法可能也会缩短您上面编写的内容(仅一个变量)。如果您打算应用
someFormatString.format(*x)
始终可以使用函数来生成格式化程序来缩短此过程:

def mkStr(formatStr):
    return lambda x,f=formatStr: f.format(*x)
然后,您可以使用

map(mkStr('hello {} {}'), product(As,Bs)]

然后用不同的格式字符串将其切换。

对于
for
循环,这正是您应该做的,不是吗?无论如何,您可以使用地图:

map(lambda x:'hello {} {}'.format(*x), product(As,Bs)]
我现在意识到参数扩展
*x
语法可能也会缩短您上面编写的内容(仅一个变量)。如果您打算应用
someFormatString.format(*x)
始终可以使用函数来生成格式化程序来缩短此过程:

def mkStr(formatStr):
    return lambda x,f=formatStr: f.format(*x)
然后,您可以使用

map(mkStr('hello {} {}'), product(As,Bs)]

并使用不同的格式字符串进行切换。

只需稍作更改即可:

['hello {} {}'.format(*ab) for ab in product(As, Bs)]

使用。

只需稍作改动,即可到达:

['hello {} {}'.format(*ab) for ab in product(As, Bs)]

使用。

@susdu我建议用谷歌搜索
*args
**kwargs
。你可以做很多漂亮的事情。@susdu我建议用谷歌搜索
*args
**kwargs
。你可以做很多漂亮的事情。fwiw我认为努力缩短代码会使代码变得不那么明确,更难推理。记住
显式比隐式好。
.fwiw我认为努力缩短代码会使代码不那么显式,更难推理。记住显式比隐式好。。