Python Set pop() 方法
描述
pop() 方法用于移除并返回集合中的一个随机元素。如果集合为空,会抛出 KeyError 异常。
语法
pop() 方法语法:
set.pop()
参数
- 无
返回值
返回移除的元素。
实例
随机移除一个元素:
实例 1
fruits = {"apple", "banana", "cherry"}
fruits.pop()
print(fruits)
输出结果为:
{'apple', 'banana'}
输出返回值:
实例 1
fruits = {"apple", "banana", "cherry"}
x = fruits.pop()
print(x)
输出结果为:
banana
注意事项
- 集合中的元素是无序的,因此每次调用
pop()
方法时,被移除的元素是随机的。 - 如果需要移除特定的元素,应该使用
remove()
或discard()
方法,而不是pop()
。
家和
434***789@qq.com
参考地址
我在学习过程中发现, set 集合的 pop() 方法, 不像上面所述的那样, 只是随机删除一个元素, 而是有一定的规律可循的, 我将我发现的规律总结如下:
下面是打印的结果 1(随机删除一个非数字的元素):
下面是结果2(删除的是数字, 但删的是最小的数字, 其余数字元素升序排列, 非数字元素随机排列):
下面是结果3(删除的是数字, 但删的是最小的数字, 其余数字元素升序排列, 非数字元素随机排列):
总结:
1、如果集合的元素都是数字, 删除时, 删掉的是最小的数字, 其余数字升序排列
2、如果集合的元素是非数字, 删除时, 删掉的是随机的元素, 其余元素随机排列
3、如果集合里既有数字又有非数字元素, 删除时:
家和
434***789@qq.com
参考地址
积木君-学习中
zha***anpei6@sina.com
补充楼上的,对于数字的删除,内容相同的集合多次执行结果完全相同,但是不一定是最小数字,而是呈现类似字符串的比较规律,即2为最高位数字在1为最高位数字之后删除。但是对于1和100的删除顺序依然未知(不同集合中结果不一样)
以下是测试代码:
以下是测试结果:
积木君-学习中
zha***anpei6@sina.com
ygx800217
831***90@qq.com
补充楼上的,对于 2 为最高位数学在1为最高位数学之后删除的说法是不一定。但是内容相同的集合多次执行结果完全相同,这一点可以确定。 以下是测试代码:
A:
以下是测试结果:
B:
以下是测试结果:
ygx800217
831***90@qq.com
antilina
285***4560@qq.com
补充一下,版本是3.11.2:
对于 set.pop() 的删除顺序,我发现它和该集合在内存中存储的实际顺序有关,有以下语句:
会发现,set.pop()每次删除set中第一个元素,但是由于d的内容存储顺序是1,100,101,20,200,10,所以会按照这个顺序依次删除;对于set中只有非数字元素的情况,随机的其实是集合内容的存储顺序,每次赋值内容顺序改变,但是pop仍然按照从左到右的顺序依次删除,所以看起来就是重复赋值,删除结果不同。
antilina
285***4560@qq.com