python在列表中删除元素的方法,python中删除列表元素的方法

  python在列表中删除元素的方法,python中删除列表元素的方法

  本文主要介绍python安全删除列表元素的方法。共享方法包括创建新列表、过滤元素和迭代列表副本。以下相关内容朋友们可以参考一下。

  00-1010方法1:创建新列表,过滤元素1a)导出列表,创建新列表1b)导出列表,给A赋值[3360] 1c)使用itertools.filterfalse()方法2:在列表副本上迭代公共陷阱前言:

  看似简单的任务往往暗藏陷阱!

  一个常见的任务是在一个列表上迭代,并根据条件删除一些元素。本文将展示完成这项任务的不同方法,同时展示一些要避免的陷阱。

  假设我们需要修改列表A,我们必须删除所有不均匀的项。

  首先实现辅助函数even(x)来确定一个数字x是否是偶数:

  a=[1,2,2,3,4]

  定义偶数(x):

  return x % 2==0

  

目录

  

方法1: 创建新列表,过滤元素

  使用列表推导创建一个新的列表,只包含你不想删除的元素,并把它分配回a:

  a=[1,2,2,3,4]

  定义偶数(x):

  return x % 2==0

  # list派生,但是创建了一个新的变量a。

  a=[x为a中的x,如果不是偶数(x)]

  # - a=[1,3]

  打印(一份)

  

1a) 列表推导,创建新列表

  上面的代码创建了一个新的变量a,我们也可以通过给slice a赋值来原位改变现有的列表[:]。如果有需要反映变更的其他参考,这个方法会更有效率,而且可能会很有用。

  a=[1,2,2,3,4]

  定义偶数(x):

  return x % 2==0

  #列表派生,但分配到一个[:]来改变列表中的位置

  a[:]=[x for x in a if not even(x)]

  # - a=[1,3]

  打印(一份)

  

1b) 列表推导,对a[:]赋值

  Itertools模块为非常有效的循环迭代提供了各种函数,并提供了过滤元素的方法。

  a=[1,2,2,3,4]

  定义偶数(x):

  return x % 2==0

  #通过itertools快速过滤

  从itertools导入过滤器false

  a[:]=filterfalse(偶数,a)

  # - a=[1,3]

  打印(一份)

  

1c) 使用itertools.filterfalse()

  如果您真的想保留for语法,那么您需要迭代列表的副本(副本可以通过使用[:]简单地创建)。

  现在你可以在条件为True时从原始列表中删除元素:

  a=[1,2,2,3,4]

  定义偶数(x):

  return x % 2==0

  #请注意,它在列表副本a上循环[:]

  对于[:]:中项目

  如果偶数(项目):

  a .移除(项目)

  # - a=[1,3]

  打印(一份)

  

方法2:列表副本上迭代

  千万不要在同一个列表上循环,在迭代过程中修改!

  和上面的代码一样,只是没有在副本上循环。删除一个元素会将所有后续元素向左移动一个位置,因此在下一次迭代中,会跳过一个元素。

  这可能会导致不正确的结果:

  a=[1,2,2,3,4]

  定义偶数(x):

  return x % 2==0

  #直接在变量A上循环,而不是在副本上

  对于a:中的项目

  如果偶数(项目):

  a .移除(项目)

  # - a=[1,2,3]!

  打印(一份)

  另外,在列表循环过程中,千万不要修改索引!

  这是不正确的,因为在循环中改变I不会影响下一次迭代中I的值。这个例子也会产生意想不到的效果,甚至导致IndexErrors,

  比如这里:

  a=[1,2,2,3,4]

  定义偶数(x):

  return x % 2==0

  #试图在循环中更改索引I,但出现了错误!

  对于范围内的I(len(a)):

  如果偶数(a[i]):

  del a[i]

  i -=1

  # - IndexError:列表索引超出范围

  打印(一份)

  关于python安全删除列表元素的方法的文章到此结束。关于python删除列表元素的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: