Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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列表理解/三元运算符:If条件,然后追加递增值,否则追加非递增值_Python_Python 3.x - Fatal编程技术网

Python列表理解/三元运算符:If条件,然后追加递增值,否则追加非递增值

Python列表理解/三元运算符:If条件,然后追加递增值,否则追加非递增值,python,python-3.x,Python,Python 3.x,我在Python中有以下循环,我想将其转换为列表: index = 0 for i in range(number): vec[i] = index if condition: index += 1 这应该使vec看起来像[0,0,0,1,1,1,1,2,3,3,3,4,5,6,6]。然而,我正在努力创建一个列表来理解这一点 我的尝试如下所示: y=[] index = 0 [index+=1 and y.append(index

我在Python中有以下循环,我想将其转换为列表:

index = 0
    for i in range(number):
        vec[i] = index
        if condition:
            index += 1
这应该使vec看起来像
[0,0,0,1,1,1,1,2,3,3,3,4,5,6,6]。
然而,我正在努力创建一个列表来理解这一点

我的尝试如下所示:

y=[]
index = 0
[index+=1 and y.append(index) if condition else y.append(index) for _ in range(number)]

在iPython中,这甚至不执行。

海象操作员可以为您完成这项工作。。。但我衷心同意@juanpa:不要。 这很难阅读,也很难调试

>>> index = 0
>>> [ index := (index+1 if i%3 == 1 else index) for i in range(10) ]
[0, 1, 1, 1, 2, 2, 2, 3, 3, 3]

我使用了
I%3==1
作为您的“条件”。

您不应该使用列表理解作为副作用的开始,因为它们是用于表示声明性映射/过滤操作。有趣的是,我从未听说过walrus操作符。我得去看看。它有没有不难阅读或调试的用途?记住发帖的第一条规则:研究,研究,研究。别问我是否有这样的用途——查一查!是的,有。我认为,该操作符在Python3.8中是新的,并且有更好的用途。该名称来自于将操作符侧向转动,如:-)微笑。