我有一个python set set([1,2,3])并且总是想用另一个值替换该组的第三个元素。
可以像下面这样做:
def change_last_elemnent(data):
result = []
for i,j in enumerate(list(data)):
if i == 2:
j = 'C'
result.append(j)
return set(result)
但是有没有其他pythonic方法可以做到这一点,更聪明,并使其更具可读性?
提前致谢。
答案 0 :(得分:19)
集合是无序的,因此“第三”元素并不意味着什么。这将删除任意元素。
如果这是你想要做的,你可以简单地做:
data.pop()
data.add(new_value)
如果您希望通过值从设置中删除项目并替换它,您可以执行以下操作:
data.remove(value) #data.discard(value) if you don't care if the item exists.
data.add(new_value)
如果您想保留有序数据,请使用列表并执行:
data[index] = new_value
要显示未订购集合:
>>> list(set(["dog", "cat", "elephant"]))
['elephant', 'dog', 'cat']
>>> list(set([1, 2, 3]))
[1, 2, 3]
你可以看到CPython的实现只是巧合,'3'是从集合[1, 2, 3]
制作的列表的第三个元素。
您的示例代码在其他方面也存在严重缺陷。 new_list
不存在。在任何时候都不会从列表中删除旧元素,循环遍历列表的行为完全没有意义。显然,由于整个概念存在缺陷,所以这一点都不重要。