在仅执行条件的while循环中?

时间:2020-04-08 17:42:31

标签: python list

因此,我只想执行while循环语句,而不在其中放入任何内容。例如,我有一个数组arr,必须从中删除多次出现的某个元素。条件语句立即返回错误,而while循环应结束。

arr=[1,2,4,2,4,2,2]

这仅删除一个2:

arr.remove(2)

我需要运行它,只要它不返回错误。 (C ++在执行此操作后会加上分号)。 我想要这样的东西

while(arr.remove(2));

5 个答案:

答案 0 :(得分:2)

您寻求解决此问题的方法不会产生您想要的结果。由于您要创建一个新列表,因此您不会希望按照@Matthias注释使用remove函数。惯用的方法是按照以下方式进行操作:

switch (type) {
            case GET_LIST:
            case GET_MANY:
            case GET_MANY_REFERENCE:
                console.log(json)
                console.log(type)
                if (!headers.has('content-range')) {
                    throw new Error(
                        'The Content-Range header is missing in the HTTP Response. The simple REST data provider expects responses for lists of resources to contain this header with the total number of results to build the pagination. If you are using CORS, did you declare Content-Range in the Access-Control-Expose-Headers header?'
                    );
                }
                console.log((headers.get('content-range')))
                return {

                    data: json,
                    total: 
                    //json.length, 
                    parseInt(
                        headers
                            .get('content-range')
                            .split('/')
                            .pop(),
                        10
                    ),
                };

答案 1 :(得分:2)

三件事。

首先,在Python中将表达式用于副作用没有被认为是一种好习惯-这不是“ pythonic”。例如,这就是为什么Python赋值运算符本身不是表达式。 (尽管您可以执行类似a = b = 1的操作来将多个变量设置为相同的值,但该语句不会分解为a = (b = 1);任何将赋值语句用作值的尝试都是语法错误。 )

第二,也不鼓励就地修改数据;通常,最好在创建副本时进行复制并进行更改。

第三,即使这是做事的好方法,在这种情况下也行不通。当remove方法成功时,它返回None,这是不正确的,因此您的循环立即退出。另一方面,当它失败时,它会引发异常,而不是返回错误值,该异常将终止整个程序,而不仅仅是循环,除非将其包装在try块中。

所以列表理解可能是最好的解决方案。

答案 2 :(得分:1)

所以我只想执行while循环语句,而不在其中放入任何内容。

那真的没有必要。不要尝试在Python中复制其他语言的语法。不同的语言具有不同的目标,因此具有不同的语法(或语言语法)。 Python具有与C ++不同的处理方式。

如果您想专注于该计划的有效性,那就不一样了。有关更多信息,请参见this

不幸的是,remove不返回任何内容(它返回None)。因此,如果不将任何物品放入其中,您将无法拥有看起来整洁干净的任何物品。

从列表中删除所有出现的元素的Python方法:

list(filter((2).__ne__, arr))

arr = [x for x in arr if x != 2]

while 2 in arr:
    arr.remove(2)

答案 3 :(得分:0)

您可以使用:

arr = [1,2,4,2,4,2,2]

try:
    while arr.pop(arr.index(2)):
          pass
except ValueError:
    pass

print(arr)
#[1, 4, 4]

答案 4 :(得分:0)

我假设您要删除所有出现的元素。此链接可能会对您有所帮助。 click here

相关问题