while循环处理列表和字典

一、在列表之间移动元素

  假设有一个列表,里面存放的是网站新注册但没有验证的用户,验证这些用户后,如何将它们移动到另一个已验证用户列表中呢?

其中一种方法是使用while循环,在验证用户的同时,将其从未验证的用户列表中移除,将之加入到已验证用户列表中,代码类似于这样:

#首先我们创建一个未认证用户列表
unconfirmed_users = ['alice','joker','jack']
confirmed_users = []

#验证每个用户直到没有未验证用户为止
# 还需要将每个验证过的用户移入已验证用户列表
while unconfirmed_users:
    current_user = unconfirmed_users.pop()
    print("Verifing user :" + current_user.title())
    confirmed_users.append(current_user)
    
#显示所有已验证用户
print("
The following users have been confirmed:")
for confirmed_user in confirmed_users:
    print(confirmed_user.title())

console:

解释:我们首先创建一个未验证的用户列表,又创建了一个空的已认证的用户列表用于存储已验证用户。

while循环不断地运行直到unconfirmed_users 列表变为空的。在这个循环中,方法 pop() 以每次一个的方

式从列表 unconfirmed_users 末尾删除未验证用户。由于 jack 位于unconfirmed_users 列表末尾,所以其

名字首先被删除、存储到变量current_user 中并加入到列表confirmed_users 中,接下来是 joker、alice。

二、删除包含特定值的所有列表元素

 remove()方法可以用来删除列表中的特定值,但也只能删除列表中所出现的第一次的特定值。如果要删除列

表中所有特定值,如何去做?

用while循环加上remove() 方法即可实现,如下:

names = ['jack','joker','jack','joker','alice','nacy']

#假设我们要删除其中所有的‘joker’
while 'joker' in names:
    names.remove('joker')
    
print(names)

console:

解释:我们首先创建了一个姓名列表,里面包含多个‘值为joker’元素,然后进入while循环进行条件判断,

'joker' 存在于names 中,所以进入循环,执行remove,删除了列表中的第一个‘joker’,然后回到while条

件判断,names 中是否还存在‘joker’,存在,继续执行循环中的语句,此时则删除了第二个‘joker’,再次

回到了while 条件的判断,此时names中不存在‘joker’了,不会执行while循环里的语句了,继续往下,执

行,打印 names,names中的‘joker’已被全部删除,所以打印中不存在‘joker’。

  我的兴趣爱好分动态和静态,动态就是翻身,静态就是睡觉

原文地址:https://www.cnblogs.com/tizer/p/10961467.html