我有一个列表:test = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
需要使用 Python 标准库 以所有可能的方式增加每个列表元素。这是一项测试任务,我已经这样做了:

test = [elem + 1 for elem in test]

for i in range(len(test)): test[i] += 1

test = map(lambda x : x + 1, test)

test = [sum(elem) for elem in zip(test, [1]*len(test))]

还有其他想法吗?

最佳答案

你可以使用递归,(你可以使用 TrueFalse 而不是 10 ,但这只是胡说八道):

def recurseadd(test):
    if test:
        return [test[False] + True] + recurseadd(test[True:])
    else:
        return test

您可以使用 + 代替 [test[0] + 1].extend(recurseadd(test[1:]))

如果需要,您可以使用 operator.add 而不是 + ,使用 functools.partialitertools.imap :
from functools import partial
from operator import add
from itertools import imap

addone = partial(add, 1)

test = list(imap(addone, test))  # don't really use imap if you want a list

您可以使用 itertoolsiziprepeat :
test = [sum(elem) for elem in izip(test, repeat(1))]
sum 的另一种方法,灵感来自 Eren 对 GWW 回答的评论:
test = sum(([x+1] for x in test), [])

你可以使用 xrange 而不是 range ,你可以使用 itertools.count(1).next() 来生成 1 s...

有无数次要变化,但您的三个加上递归版本似乎涵盖了基本的变化。 Eren的reduce版本也不错。

关于python - 以所有可能的方式增加每个列表元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7272643/

10-12 21:04