我一直在尝试使用while循环和for循环从列表中删除随机项。对于while循环,它应该将其打印到控制台,直到列表days为空。
这是到目前为止我的代码-
while循环:
days = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']
while len(days) > 0:
days = days.pop(0)
for循环:
for day in range(len(days)):
day = days.pop(0)
输出:for循环:
AttributeError: 'str' object has no attribute 'pop'
我是一个新手程序员,我正在努力纠正这个问题。有没有办法从while循环中弹出项目?有人能解释一下属性错误以及为什么我会收到这个消息吗?
3条答案
按热度按时间wooyq4lh1#
如果你想随机删除
nlejzf6q2#
你的第一个循环是正确的方法。但是您正在用第一个元素覆盖列表。你想要什么
这个
for
循环不是好的做法。在遍历列表时修改列表是很危险的。好好想想。第一次通过循环,“天”是0。您弹出元素0。现在,以前是[1]的元素在[0]槽中,但是当您再次循环时,day
将为1,并且您的编号已关闭。同样,您正在覆盖循环变量(
day
)和流行音乐的结果。小心你的变量名。ccrfmcuu3#
要随机删除,可以使用numpy生成一个随机数,然后使用.pop()从列表中删除项目并同时打印: