Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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 使用lambda通过更改/修改旧列表创建新列表_Python_List_Lambda - Fatal编程技术网

Python 使用lambda通过更改/修改旧列表创建新列表

Python 使用lambda通过更改/修改旧列表创建新列表,python,list,lambda,Python,List,Lambda,现在我想得到如下输出: oldlist=['a','b','c'] print newlist=[(lambda x : x+x )(x) for x in oldlist ] # Result: ['aa', 'bb', 'cc'] newlist=['1a','2b','3c'] 希望我能用lambda这样做: oldlist=['a','b','c'] print newlist=[(lambda x : x+x )(x) for x in oldlist ] # Result: ['

现在我想得到如下输出:

oldlist=['a','b','c']
print newlist=[(lambda x : x+x )(x) for x in oldlist ]
# Result: ['aa', 'bb', 'cc']
newlist=['1a','2b','3c']
希望我能用lambda这样做:

oldlist=['a','b','c']
print newlist=[(lambda x : x+x )(x) for x in oldlist ]
# Result: ['aa', 'bb', 'cc']
newlist=['1a','2b','3c']
但我不允许在lambda中使用多行表达式。那么如何在lambda中增加idx呢?

您根本不需要使用lambda

使用:

或者,您可以与迭代器一起使用:

>>> oldlist = ['a','b','c']
>>> [str(i) + x for i, x in enumerate(oldlist, 1)]
['1a', '2b', '3c']
您根本不需要使用lambda

使用:

或者,您可以与迭代器一起使用:

>>> oldlist = ['a','b','c']
>>> [str(i) + x for i, x in enumerate(oldlist, 1)]
['1a', '2b', '3c']

不能在lambda内部递增,如果必须使用lambda,则必须从外部传递递增的值,因为这里不需要lambda,正如@falsetru所建议的那样。使用索引并将其传递给lambda


不能在lambda内部递增,如果必须使用lambda,则必须从外部传递递增的值,因为这里不需要lambda,正如@falsetru所建议的那样。使用索引并将其传递给lambda

为什么不将enumerate与标准python列表定义一起使用:

newlist=[(lambda idx, x : str(idx)+x)(idx, x) for (idx, x) in enumerate(oldlist, 1) ]
为什么不将enumerate与标准python列表定义一起使用:

newlist=[(lambda idx, x : str(idx)+x)(idx, x) for (idx, x) in enumerate(oldlist, 1) ]

谢谢,它解决了我的问题。顺便说一句,如果我想增加5->['1a','6b','11c']等,那该怎么办。。。。enumerate似乎没有参数来控制该步骤。@andio,[str1+5*i+x代表i,enumerateoldlist中的x]@andio,带有itertools.count:it=itertools.count1,5谢谢,它解决了我的问题。顺便说一句,如果我想增加5->['1a','6b','11c']等,那该怎么办。。。。enumerate似乎没有参数来控制该步骤。@andio,[str1+5*i+x代表i,enumerateoldlist中的x]@andio,带有itertools.count:it=itertools.count1,5在该位置不需要lambda。[lambda x:iteratorexpr中x的exprx]与[iteratorexpr中x的expr]完全等效,在该位置不需要lambda。[lambda x:iteratorexpr中x的exprx]与iteratorexpr中的[expr for x]完全等效
>>> oldlist = ['a','b','c']
>>> newlist = [str(idx + 1) + e for idx, e in enumerate(oldlist)]
>>> print(newlist)
['1a', '2b', '3c']