Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换特定集合元素的pythonic方法是什么?_Python - Fatal编程技术网

替换特定集合元素的pythonic方法是什么?

替换特定集合元素的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) 但是,有没有其他类似于蟒蛇的方法来做到这一点,更聪明

我有一个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)
但是,有没有其他类似于蟒蛇的方法来做到这一点,更聪明,更易读


提前感谢。

集合是无序的,所以“第三个”元素实际上没有任何意义。这将删除任意元素

如果这是你想做的,你可以简单地做:

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”
——但是,由于我在文章中给出的原因,您尝试执行的操作是毫无意义的。