在 Python 中从元组中删除一个元素
Remove an element from a tuple in Python
从元组中删除一个元素:
- 使用生成器表达式迭代元组。
- 在每次迭代中,检查元素是否满足条件。
- 使用
tuple()
该类将结果转换为元组。
main.py
my_tuple = ('one', 'two', 'three', 'four') # ✅ remove one or more items from a tuple # 👇️ using a generator expression new_tuple_1 = tuple( item for item in my_tuple if item != 'two' ) # 👇️ ('one', 'three', 'four') print(new_tuple_1) # ------------------------------------------ # ✅ remove specific item from a tuple idx = my_tuple.index('two') new_tuple_2 = my_tuple[:idx] + my_tuple[idx+1:] # 👇️ ('one', 'three', 'four') print(new_tuple_2)
元组与列表非常相似,但实现的内置方法较少并且是不可变的(无法更改)。
由于无法更改元组,因此从元组中删除元素的唯一方法是创建一个不包含该元素的新元组。
第一个示例使用生成器表达式迭代元组。
在每次迭代中,我们检查元组项是否不等于字符串two
并返回结果。
main.py
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()
方法获取要删除的项目的索引。 - 使用元组切片获取项目前后的项目切片。
- 使用加法 (+) 运算符组合两个切片。
main.py
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:]
的项目之后的项目。
main.py
my_tuple = ('one', 'two', 'three', 'four') idx = my_tuple.index('two') # 👇️ ('one',) print(my_tuple[:idx]) # 👈️ before # 👇️ ('three', 'four') print(my_tuple[idx+1:]) # 👈️ after 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()
方法从列表中删除项目。 - 将列表转换回元组。
main.py
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
语句。
main.py
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()
该类将列表转换回元组。