使用while循环来处理列表和字典

  • Q:为什么要使用while循环来处理列表和字典

  • A:for循环是一种遍历列表的有效方式,但在for循环中不应修改列表,否则将导致Python难以跟踪其中的元素。要在遍历列表的同时对其进行修改,可使用while循环。通过将while循环同列表和字典结合起来使用,可收集、存储并组织大量输入,供以后查看和显示。

  • Q:在列表之间移动元素

  • A:使用一个while循环创造条件

# 下面是在列表中移动元素的例子

# 首先,创建一个待验证用户列表
# 和一个用于存储已验证用户的空列表
unconfirmed_users = ['alice', 'brian', 'candace']
confirmed_users = []

# 验证每个用户,直到没有未验证用户为止
# 将每个经过验证的列表都移到已验证用户列表中
while unconfirmed_users:#while+列表 循环直到列表为空(False)
    current_user = unconfirmed_users.pop()

    print("Verifying 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())
------------------------------------------------------------------
Verifying user: Candace
Verifying user: Brian
Verifying user: Alice

The following users have been confirmed:
Candace
Brian
Alice

  • Q:删除包含特定值的所有列表元素
  • A:使用while循环+remove()函数
# 下面是删除所有包含特定值的列表元素的例子
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']
  • Q:使用用户输入来填充字典
  • A:可以使用while循环来提示用户输入任意数量的信息
# 下面是使用用户输入来填充字典的例子
responses = {}

polling_active = True    # 设置一个标志,指出调查是否继续

while polling_active:    # 提示输入被调查者的名字和回答
    name = input("
What is your name? ")
    response = input("Which mountain would you like to climb someday? ")

    responses[name] = response    # 将答案存储在字典中
    
    repeat = input("Would you like to let another person respond? (yes/ no) ")    # 看看是否还有人要参与调查
    if repeat == 'no':
        polling_active = False

# 调查结束,显示结果
print("
--- Poll Results ---")
for name, response in responses.items():
    print(name + " would like to climb " + response + ".")
------------------------------------------------------------------
What is your name? Eric
Which mountain would 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 Results ---
Lynn would like to climb Devil's Thumb.
Eric would like to climb Denali.
原文地址:https://www.cnblogs.com/goodhelper007/p/Use_a_while_loop_to_process_lists_and_dictionaries.html