Python3 从元组中删除元素

要从元组中删除元素:

  • 使用生成器表达式迭代元组。
  • 在每次迭代中,检查元素是否满足条件。
  • 使用 tuple() 类将结果转换为元组。
my_tuple = ('one', 'two', 'three', 'four')

# 从元组中删除一个或多个项目

# 使用生成器表达式
new_tuple_1 = tuple(
  item for item in my_tuple if item != 'two'
)

# ('one', 'three', 'four')
print(new_tuple_1)

# ------------------------------------------

# 从元组中删除特定项目

idx = my_tuple.index('two')

new_tuple_2 = my_tuple[:idx] + my_tuple[idx+1:]

# ('one', 'three', 'four')
print(new_tuple_2)

运行示例

元组与列表非常相似,但实现的内置方法更少,并且是不可变的(无法更改)。

由于元组不能更改,从元组中删除元素的唯一方法是创建一个不包含该元素的新元组。

第一个示例使用生成器表达式来迭代元组。

在每次迭代中,我们检查元组项是否不等于字符串 two 并返回结果。

my_tuple = ('one', 'two', 'three', 'four')

new_tuple_1 = tuple(item for item in my_tuple if item != 'two')

# ('one', 'three', 'four')
print(new_tuple_1)

生成器表达式用于对每个元素执行一些操作或选择满足条件的元素子集。

确保将生成器对象传递给 tuple() 类以将其转换为元组。

当我们需要从元组中删除一个或多个元素时,此方法很有用。

或者,我们可以获取尝试删除的项目的索引并创建一个没有该项目的新元组。

要从元组中删除项目:

  • 使用 index() 方法获取要删除的项目的索引。
  • 使用元组切片来获取项目之前和之后的项目切片。
  • 使用加法 (+) 运算符组合两个切片。
my_tuple = ('one', 'two', 'three', 'four')


idx = my_tuple.index('two')

new_tuple_2 = my_tuple[:idx] + my_tuple[idx+1:]

#  ('one', 'three', 'four')
print(new_tuple_2)

第一个切片 [:idx] 选择我们要删除的元组之前的项,第二个 [idx+1:] 选择我们要删除的项之后的项。

my_tuple = ('one', 'two', 'three', 'four')

idx = my_tuple.index('two')

# ('one',)
print(my_tuple[:idx]) # 之前

# ('three', 'four')
print(my_tuple[idx+1:]) # 之后

new_tuple_2 = my_tuple[:idx] + my_tuple[idx+1:]

# ('one', 'three', 'four')
print(new_tuple_2)

列表切片的语法是 my_list[start:stop:step] ,其中 start 索引包含在内,stop 索引不包含在内。

start 索引包含在内,因此我们必须将 1 添加到第二个切片中元素的索引。

最后一步是使用加法 (+) 运算符通过组合其他两个来创建一个新元组。

要从元组中删除元素:

  • 将元组转换为列表(列表是可变的)。
  • 使用 list.remove() 方法从列表中删除项目。
  • 将列表转换回元组。
my_tuple = ('one', 'two', 'three', 'four')

my_list = list(my_tuple)

my_list.remove('two')
print(my_list)  # ['one', 'three', 'four']

new_tuple = tuple(my_list)
print(new_tuple)  # ('one', 'three', 'four')

请注意,这种方法在处理大型元组时效率不高。

我们使用 list() 类将元组转换为列表。

list.remove() 方法从列表中删除其值等于传入参数的第一项。

如果没有这样的项目,该方法会引发 ValueError

remove() 方法改变原始列表并返回 None

如果需要处理在列表中找不到项目的情况,需要使用 try/except 语句。

my_tuple = ('one', 'two', 'three', 'four')

my_list = list(my_tuple)

try:
    my_list.remove('two')
    print(my_list)  #  ['one', 'three', 'four']
except ValueError:
    print('Item not in list')

new_tuple = tuple(my_list)
print(new_tuple)  # ('one', 'three', 'four')

最后一步是使用 tuple() 类将列表转换回元组。

查看笔记

扫码一下
查看教程更方便