例如,我想删除此元组中的额外1和2('1', '1', '1', '1', '1', '1', '1', '2', '2', '2')返回('1','2')
我该怎么做?
答案 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
进行排序。