Python6.4:嵌套

本文介绍了如何在Python中使用字典列表来管理一组外星人,包括创建、遍历和修改外星人属性。通过示例展示了如何生成多个具有相同属性的外星人,并在游戏进程中独立修改它们的颜色、速度和分数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

考试停两天

有时候,需要将一系列字典存储在列表中,或将列表作为只存储在字典中,这称为嵌套。可以在列表中嵌套中字典,在字典中嵌套列表甚至在字典中嵌套字典。嵌套贼强了。

6.4.1字典列表

字典alien_0包含一个外星人的各种信息,但无法存储第二个外星人的信息,更别说屏幕上全部外星人的信息了。如何管理成群结队地外星人呢?一种办法是创建一个外星人列表,其中没一个外星人都是一个字典,包含有关该外星人的各种信息。例如,下面的代码创建一个包含三个外星人的列表:

alien_0 = {'color':'gree','pointa':5}
alien_1 = {'color':'yellow','pointa':10}
alien_2 = {'color':'red','pointa':15}
aliens = [alien_0,alien_1,alien_2]
for alien in aliens:
    print(alien)

首先创建三个字典,其中每个字典都表示一个外星人,然后再将这些字典存储到一个名为 aliens的列表中,最后遍历这个列表,并将每个外星人都打印出来:

{'color': 'gree', 'pointa': 5}
{'color': 'yellow', 'pointa': 10}
{'color': 'red', 'pointa': 15}

更符合现实情况的是,外星人不止三个,且每个外星人都是代码自动生成的,在下面的示例中,使用range()生成30个外星人:

#创建一个存储外星人的空列表。
aliens = []
# 创建30个绿色的外星人
for alien_number in range(30):
     new_alien = {'color':'gree', 'points':5, 'speed':'slow'}
     aliens.append(new_alien)

#显示前5个外星人
for alien in range[:5]:
     print(alien)
print("...")
# 显示创建了多少个外星人
print (f"toal number of aliens:{len(aliens)}")

在本例中,首先创建一个空列表,用于储存接下来将创建的所有外星人,range()返回一系列数,其唯一用途是告诉py要重复这个循环多少次。每次执行这个循环时,都会创建一个外星人,并将其附加到列表 aliens末尾,然后使用一个切片来打印前五个外星人,最后,打印列表的长度,以证明确实创建了30个外星人。

输出:

{'color': 'gree', 'points': 5, 'speed': 'slow'}
{'color': 'gree', 'points': 5, 'speed': 'slow'}
{'color': 'gree', 'points': 5, 'speed': 'slow'}
{'color': 'gree', 'points': 5, 'speed': 'slow'}
{'color': 'gree', 'points': 5, 'speed': 'slow'}
...
toal number of aliens:30

这些外星人都具有相同的特征,但在py看来,每个外星人都是互相独立的,让我们能够独立的修改每个外星人。

随着游戏的进行,我们需要处理成群结队的外星人,有些外外星人会变色且加快移动速度,必要时,可使用for 循环 和if 循环语句来修改某些外星人的颜色,例如要将前三个外星人修改为黄色,速度中等且值10分,可以这样做:

#创建一个存储外星人的空列表。
aliens = []
# 创建30个绿色的外星人
for alien_number in range(30):
     new_alien = {'color':'gree', 'points':5, 'speed':'slow'}
     aliens.append(new_alien)
for alien in aliens[:3]:
    if alien['color']=='gree':
       alien['color']= 'yellow'
       alien['speed']= 'medium'
       alien['points']= 10
#显示前五个外星人
for alien in aliens[:5]:
      print(alien)
print("...")

鉴于要修改前三个外星人,我们遍历一个只包含这些外星人的切片。当前,所有外星人都是绿色的,但情况并非总是如此。因此编写一条if 语句来确保只修改绿色外星人。如果外星人是绿色的,就将其颜色改为‘yellow’,将其速度改为‘medium’,便将其分数改为10,输出如下:

{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'gree', 'points': 5, 'speed': 'slow'}
{'color': 'gree', 'points': 5, 'speed': 'slow'}
...

可进一步扩展这个循环,在其中添加一个 elif 代码块,将黄色外星人改为移动速度快且值15分的红色外星人,如下所示:

for alien in aliens[:3]:
    if alien['color']=='gree':
       alien['color']= 'yellow'
       alien['speed']= 'medium'
       alien['points']= 10
elif alien['color'] == 'yellow':
     alien['color'] = 'red'
     alien['speed']= 'fast'
     alien['points']= 15

j经常需要在列表中包含大量的字典,而每个字典都包含特定对象的众多信息。

晚安啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值