在列表之间移动元素

假设有个列表,包含了新注册但是未验证的网站用户,验证了这些用户以后,如何将他们移动到另一个已验证的列表中?

其中一个办法就是使用一个while循环。

un_users = ['alice','brian','candace'] #未验证的用户
confirmed_users = []#已验证的用户,暂时为空
while un_users:
current_user = un_users.pop()
print("Verifying user: "+ current_user.title())
confirmed_users.append(current_user)
#显示所有已经验证的用户
print("\nThe following users have been confirmed: ")
for confirmed_user in confirmed_users:
print(confirmed_user)

输出结果:Verifying user: Candace

Verifying user: Brian

Verifying user: Alice

The following users have been confirmed:

candace

brian

alice

这里我们创建了一个未验证用户的列表,还有一个空列表,while循环不断的运行,知道未验证的列表变成空的。

这个过程中,pop函数每一次都会把一个用户从未验证列表的末尾处删除,存入变量cruuent_user,然后将变量添加到空列表中。

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

之前我们使用函数remove()删除列表中的特定值,这之所以能够运行,是因为要删除的值在列表中只出现了一次。

pets=['dog','cat','dog','goldfish','cat','rabbit','cat']
print(pets)
while 'cat' in pets:
pets.remove('cat')
print(pets)

pets列表有3个cat元素,while循环在发现cat至少出现了1次,所以会删除1次,直到cat不在pets列表中。

输出结果:['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']

['dog', 'dog', 'goldfish', 'rabbit']

使用input函数填充字典

我们可以用while玄幻提示用户输入任意数量的信息,下面就创建一个调查程序,其中的循环每次执行时都提示输入被调查的名字和回答。我们收集这些数据存入一个字典中,以便将回答同调查者关联起来。

responses={}
#设置一个标志,指出是否继续调查
polling_active = True
while polling_active:
#提示输入被调查者的姓名和回答
name = input("\n您的名字? ")
response =input("\n有机会的话,你想去参加什么决赛? ")
#将用户输入的答案存入字典
responses[name]=response
#看看是否还有人要参与调查
repeat = input("是否继续参与调查?(yes/no)")
if repeat =='no':
polling_active = False
#调查结束,显示结果
print("\n---Poll Results---")
for name,response in responses.items():
print(name + "很想参加"+ response + ".")

首先程序定义了一个空字典,并设了一个标志。

用户输入姓名后,会提问用户想参加什么比赛。

输入yes程序继续循环,输入no程序结束。

结果如下:您的名字? 凯

有机会的话,你想去参加什么决赛? 王者巅峰赛

是否继续参与调查?(yes/no)yes

您的名字? 安其拉

有机会的话,你想去参加什么决赛? 王者巅峰赛

是否继续参与调查?(yes/no)no

---Poll Results---

安其拉很想参加王者巅峰赛.

凯很想参加王者巅峰赛.

期待您的进步