Optimism is a happiness magnet. If you stay positive, good things and good people will be drawn to you.
乐观是幸福的磁铁。 如果你保持积极态度,那么好事和好人将会被你吸引。
小闫语录:
生活中有一种现象,不知你是否有感觉。每当很倒霉的时候,各种倒霉事络绎不绝的到来;当一个人顺风顺水的时候,好事也会源源不断。及时调整心态,微笑出发。
昨天的文章『每天 3 分钟,小闫带你学 Python(十)』讲解了字符串的相关操作,此处就不做回顾,直接开始今天的内容。
在保存单条数据时,使用字符串完美解决,当需要保存多条数据呢?答案便是列表。
列表格式如下:
[element1, element2, element3...]
元素之间使用逗号隔开,所有元素使用中括号包裹
注意:列表中的元素可以是任意类型,可以是数字,可以是字符串等。
>>> mylist = ['EthanYan', 1, (1,)]
>>> print(mylist)
['EthanYan', 1, (1,)]
将列表 mylist
赋值给变量,然后进行打印。(当然你可以直接打印列表,此处只是做演示)
>>> mylist = ['EthanYan', 1, (1,)]
>>> mylist[0]
'EthanYan'
>>> mylist[1]
1
>>> mylist[2]
(1,)
>>> mylist[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
列表可以根据下标进行取值,如果超出下标范围会报错。
>>> mylist = ['EthanYan', 1, (1,)]
>>> mylist[0:1]
['EthanYan']
>>> mylist[0:2]
['EthanYan', 1]
同样,列表也支持切片操作。
上面提到可以使用下标索引进行取值,如果要求将所有的值取出来,是不是有些繁琐?如果再要求对每个值进行相关操作,是不是更麻烦?现在提供一种便捷的方式,那便是 for
循环。看如下示例:
mylist = ['EthanYan', 1, (1,)]
for element in mylist:
print(element)
输出结果为:
EthanYan
1
(1,)
是不是有些意思?既然可以使用 for
循环,那么一定可以使用 while
循环。下面继续。
mylist = ['EthanYan', 1, (1,)]
# 计算列表长度
length = len(mylist)
i = 0
while i < length:
print(mylist[i])
i += 1
执行结果如下:
EthanYan
1
(1,)
计算列表长度使用到了 len() 函数,也许你会想:编程不是从 0 开始计算吗?使用长度的话不是会超出取值范围吗?最后一个值是会超出范围,但是我们
while
循环中使用到了<
,即长度取不到,取到前一个值,正好与下标相同。
经过之前学习 if
条件判断的嵌套, for
循环的嵌套等等,是否已经猜出列表嵌套如何了?没错,列表的嵌套便是列表中嵌套列表,即列表元素是列表。形式如下:
schoolNames = [['北京大学','清华大学'],
['南开大学','天津大学','天津师范大学'],
['山东大学','中国海洋大学']]
也许你觉得这没什么用,下面看一个应用示例。
一个学校,有3个办公室。现在有8位老师等待工位的分配,请编写程序,完成随机分配
先独立思考,然后再看下方答案
此处涉及到一个超纲的知识点,我们明天会讲解。此处做一个小提示:
列表中添加元素:
可以使用 append
方法,看如下实例:
mylist = ['EthanYan', 1, (1,)]
mylist.append('Pythonnote')
print(mylist)
输出结果:
['EthanYan', 1, (1,), 'Pythonnote']
可以看到
Pythonnote
添加到了列表的尾部。同时也说明列表是可变的类型。字符串是不变的,大家可以去尝试对字符串进行操作,然后观察原字符串是否发生变化?,此处留一个小作业。
import random
# 定义一个列表用来保存3个办公室
offices = [[],[],[]]
# 定义一个列表用来存储8位老师的名字
names = ['A','B','C','D','E','F','G','H']
i = 0
for name in names:
# random.randint(0,2)
# 随机产生一个 0 到 2 之间的整数
index = random.randint(0,2)
offices[index].append(name)
i = 1
for tempNames in offices:
print('办公室%d的人数为:%d'%(i,len(tempNames)))
i+=1
for name in tempNames:
print("%s"%name,end='')
print("\n")
print("-"*20)
输出结果为:
办公室1的人数为:1
C
--------------------
办公室2的人数为:3
ABE
--------------------
办公室3的人数为:4
DFGH
--------------------
今日学习目标:学习列表的相关概念,熟悉列表的形式,掌握列表的循环遍历、下标索引、切片等相关操作。
1.验证字符串是否是可变的类型?
小提示:可以对字符串进行操作,然后检查原字符串是否发生变化。
2.列表嵌套中应用进行练习。