python中集合为什么不可以.pop(0)但可以.pop()

sandwich_orders = ['niurou','zhurou','pas','rabbit','pas','apple','banana','pas']
print("--- pas is not in ---")
'''while 'pas' in sandwich_orders:
sandwich_orders.remove('pas')'''
sandwich_orders = set(sandwich_orders)
sandwich_orders.remove('pas')
finishied_sandwich = []
while sandwich_orders :
finish = sandwich_orders.pop(0)

print(f"I have finished {finish}")
finishied_sandwich.append(finish)

print(sandwich_orders)
print(finishied_sandwich)

img

学习练习遇到的问题,求解答

集合是可变的、无序的、元素唯一的结构
既然它无序,那么你就不能用索引访问,也不可切片
所以pop后面不可带索引定位,虽然是删除,但它也是随机删除

首先,你要区别开set和list,这两个中的pop方法不同,详细如下:
set.pop() ----删除最后一个元素
list.pop([index=-1]) ----删除给定下标的元素
而你现在sandwich_orders是个set对象,你调用了它的pop方法,所以应该看这个用法:
set.pop() ----删除最后一个元素
它是不接受任何参数的,而你现在给它下标了,参数数量与声明的不一致,所以会报TypeError