如何删除元组中元素的第一个实例?

2024-09-22 16:29:10 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我有一个元组:

(7, 5, 3, 3, 6, 3, 9)

我只想去掉元组中的第一个数字3,这样它就会变成这样:

^{pr2}$

我写的代码使用过滤器工具来去除3,但是它也会去掉所有其他3:

def takeOut(k, r):
    newK = tuple(filter(lambda x: x != r, k))
    return newK

print(takeOut((7, 5, 3, 3, 6, 3, 9), 3))

Tags: 工具lambda代码过滤器returndef数字filter
3条回答

您可以利用index只返回元素的第一个索引这一事实,并将生成器表达式转换回元组:

>>> tuple(e for i, e in enumerate(k) if i != k.index(3))
(7, 5, 3, 6, 3, 9)

这并不像人们想象的那么简单,原因是元组是不可变的。在

一种简单的方法是转换为list,使用remove删除第一个实例,然后转换回元组:

t = (7, 5, 3, 3, 6, 3, 9)

t2 = list(t)
t2.remove(3)
tuple(t2)
# (7, 5, 3, 6, 3, 9)

作为函数:

^{pr2}$

我会选择切片:

def remove_element(seq, element):
    try:
        index = seq.index(element)
        return seq[:index] + seq[index + 1:]
    except ValueError:  # element doesn't exist
        return seq

相关问题 更多 >