替换特定集合元素的pythonic方法是什么?
我有一个python集([1,2,3]),总是想用另一个值替换该集的第三个元素 可按如下方式进行:替换特定集合元素的pythonic方法是什么?,python,Python,我有一个python集([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) 但是,有没有其他类似于蟒蛇的方法来做到这一点,更聪明
def change_last_elemnent(data):
result = []
for i,j in enumerate(list(data)):
if i == 2:
j = 'C'
result.append(j)
return set(result)
但是,有没有其他类似于蟒蛇的方法来做到这一点,更聪明,更易读
提前感谢。集合是无序的,所以“第三个”元素实际上没有任何意义。这将删除任意元素 如果这是你想做的,你可以简单地做:
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({"dog", "cat", "elephant"})
['elephant', 'dog', 'cat']
>>> list({1, 2, 3})
[1, 2, 3]
您可以看到,CPython的实现只是巧合,“3”是从集合{1,2,3}
生成的列表的第三个元素
您的示例代码在其他方面也存在严重缺陷<代码>新列表不存在。在任何时候都不会从列表中删除旧元素,在列表中循环的行为完全没有意义。显然,这些都不重要,因为整个概念都是有缺陷的。集合的第三个元素是什么意思?集合没有顺序,因此第三个元素在不同的实现中可能会有所不同,甚至如果你想要“第三个”元素或“最后一个”元素的概念,可以使用一个列表。天哪。这真的是个好问题吗?@穴居人:我同意这个论点,这个问题很奇怪。但你可能有一些动机或目标。你能更好地解释你想要实现什么吗?是否有任何潜规则使这些值有序化?例如,如果您是指排序后的第三个元素,则答案可能是
data.remove(sorted(data)[2])
。我不知道C
的目的是什么。新的列表是一个打字错误,应该是这样的result@caveman这并不重要。要更改列表中的一个元素,完全不需要遍历它,您可以将整个函数替换为result=list(data)
result[2]=“C”