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我认为努力缩短代码会使代码不那么显式,更难推理。记住显式比隐式好。。