Python while循环处理列表和字典
while循环处理列表和字典
for循环是一种遍历列表的有效方式,但在for循环中不应修改列表,否则将导致Python难以跟踪其中的元素。要在遍历列表的同时对其进行修改,可使用while循环。
通过将while循环同列表和字典结合起来使用,可收集、存储并组织大量输出,供以后查看和显示。
在列表之间移动元素
- #首先,创建一个待验证用户列表
- #和一个用于存储已验证用户的空列表
-
- unconfirmed_users =['alice','brian','candace']
- confirmed_users = []
-
- #验证每个用户,直到没有未验证用户为止
- #将每个经过验证的列表都移到已验证的用户列表中
- while unconfirmed_users:
- current_user = unconfirmed_users.pop()
- print("Verifying user: " + current_user.title())
-
- #显示所有已验证的用户
- print("\nThe following users have been confirmed:")
- for confirmed_user in confirmed_users:
- print(confirmed_user.title())
模拟过程,打印一条验证消息并将用户加入到已验证用户列表中。未验证用户列表越来越短,而已验证的用户列表越来越长。未验证用户列表为空后结束循环,再打印已验证的用户列表:
Verifying user: Candace Verifying user: Brian Verifying user: Alice The following users have been confirmed: Candace Brian Alice
删除包含特定值的所有列表元素
使用函数remove()来删除列表中的特定值,因为函数remove()删除特定值。如果列表包含了多个相同条件的特定值,可以使用while循环进行逐一删除。
- pets = ['dog','cat','dog','goldfish','cat','rabbit','cat']
- print(pets)
-
- while 'cat' in pets:
- pets.remove('cat')
-
- print(pets)
打印结果
- ['dog','cat','dog','goldfish','cat','rabbit','cat']
- ['dog','dog','goldfish','rabbit']
使用用户输入来填充字典
更多时候,字典中存储的信息都是记录用户输入的信息。将收集的数据存储在一个字典中,以便将回答和被调查者关联起来:
- responses = {}
-
- #设置一个标签,指出调查是否继续
- polling_active = True
-
- while polling_active:
- #提示输入被调查者的名字和回答
- name = input("\nWhat is your name? ")
- response = input("Which mountain would you like to climb someday? ")
-
- #将答案存储在字典中
- response[name] = response
-
- #看看是否还有人要参与调查
- repeat = input("Would you like to let another person respond? (Yes / No) ")
- if repeat == 'no':
- polling_active = False
-
- #调查结果,显示结果
- print("\n--- Poll Results ---")
- for name,response in responses.items():
- print(name + " would like to climb " + respose + ".")
打印输出结果
- what is your name? Eric
- Which mountain you like to climb someday? Denali
- Would you like to let another person respond? (Yes / No) yes
-
- What is your name? Lynn
- Which mountain would you like to climb someday? Devil's Thumb
- Would you like to let another person respond? (Yes / No) no
- --- Poll Resultes ---
- Lynn would like to climb Devil's Thumb.
- Eric would like to climb Denali.