Python中列表兼容性中的多个语句?

Joa*_*nge 10 python list-comprehension

有可能有类似的东西:

list1 = ...

currentValue = 0
list2 = [currentValue += i, i for i in list1]
Run Code Online (Sandbox Code Playgroud)

我试过但是没有用?编写这些语法的正确语法是什么?

编辑:print语句就是一个例子.实际上我在循环外增加一个值.

Bra*_*des 27

语句不能放在Python中的表达式中; 这是一种故意用语言设计的复杂功能.对于这个问题,尝试使用确实使其成为语言的复杂功能:生成器.看:

def total_and_item(sequence):
    total = 0
    for i in sequence:
        total += i
        yield (total, i)

list2 = list(total_and_item(list1))
Run Code Online (Sandbox Code Playgroud)

生成器保持到目前为止所看到的项目的运行记录,并将其作为每个项目的前缀,就像您看起来像您尝试做的那样.当然,一个简单的循环可能更简单,它在顶部创建一个空列表,只是调用append()很多!:-)


Dav*_*d Z 6

我不太确定你想做什么,但可能是这样的

list2 = [(i, i*2, i) for i in list1]
print list2
Run Code Online (Sandbox Code Playgroud)

列表理解中的语句必须是单个语句,但您始终可以将其设为函数调用:

def foo(i):
    print i
    print i * 2
    return i
list2 = [foo(i) for i in list1]
Run Code Online (Sandbox Code Playgroud)