删除元组中的重复数字

时间:2016-02-21 08:00:15

标签: python tuples

例如,我想删除此元组中的额外1和2('1',     '1',     '1',     '1',     '1',     '1',     '1',     '2',     '2',     '2')返回('1','2')

我该怎么做?

4 个答案:

答案 0 :(得分:4)

你无法修改元组,所以你必须得到新的元组。您可以使用set删除重复的元素。

>>> tp = ( '1', '1', '1', '1', '1', '1', '1', '2', '2', '2')
>>> tp = tuple(set(tp))
>>> tp
('1', '2')

答案 1 :(得分:3)

作为Alok correctly mentions,你必须创建一个新的元组。正如Alok演示的那样,您当然可以将它分配给以前保存原始元组的变量。

如果您不关心订单,请按照Alok的建议使用set。但是,如果您想保留(每个唯一值的第一次出现次序),您可以使用与OrderedDict非常类似的技巧:

from collections import OrderedDict

# Different example to demonstrate preserved order
tp = ('2', '2', '2', '1', '1', '1', '1', '1', '1', '1')

tp = tuple(OrderedDict.fromkeys(tp).keys())
# Now,  tp == ('2', '1')

答案 2 :(得分:0)

它们是正确的,python中的元组是不可变的,因此您无法更新当前元组。此函数循环创建数据,创建当前不存在的索引列表!然后它返回列表的元组!祝你好运!

data = ( '1', '1', '1', '1', '1', '1', '1', '2', '2', '2', '3', '4','4')

def removeDoubles(data):
    out = []
    for i in data:
        if i in out:
            continue
        out.append(i)
    del data
    return tuple(out)
print removeDoubles(data)

答案 3 :(得分:0)

您可以使用set

执行此操作
a = ( '1', '1', '1', '1', '1', '1', '1', '2', '2', '2')
b = tuple(set(a))

如果订单很重要,您可以对b进行排序。