其他相关系列文章:
Python语言基础学习笔记(1)——变量、字符串
1列表的介绍
什么是列表
names = ['zhangsan','lisi','wangma',12,18,54]
首先从格式上来讲,前面有一个单词names
,为列表名;有一个=
可以理解为赋值;后面有一对中括号,将内部的元素括起来,并且每一元素之间用,
分割;列表内的字符串需要用引号括起来。
- 列表的定义:由一系列特定顺序排列的元素组成,列表名命名的规则与变量相同。列表内可以加入任何信息。
- 列表的形式:在python中,使用
[]
来表示列表,并用(英文状态下的 , )
来分割其中的元素。
- 回顾变量的命名规则
①变量名只能包含字母、数字、下划线。其中,变量名的开头可以是字母或者是下划线,但不能是数字。
②变量名不能包含空格,但可以使用下划线分割其中的单词。例如:变量名可以是first_name
,last_name
,但不能是first name
,last name
。
③不能将python的关键词和函数名作为变量名称。例如:初学者第一步一般都是写一句print('hello world')
,其中的
④为图后续方便和容易理解,变量名应该设置的简短且具有描述性。例如,如果需要一个关于演员的变量,可以将变量命名为actor
;如果需要一个关于电影的变量,可以将变量命名为movie
;
在定义中有提到,列表内可以加入任何信息。详细来讲,列表内可以加入任何数据类型,字符串、数字、以及后续接触到的所有数据类型,甚至是内嵌一个列表,这样也是合理的,例如,如下在列表names中又嵌入一个列表:
names = ['zhangsan','lisi','wangma',12,18,54,[1,2,3,'qi','yuan']]
列表的初步使用
列表的输出使用和前章所讲赋值后的变量的使用有些类似,通过print可以直接输出列表。
names_age = ['zhangsan','lisi','wangma',12,18,54]
print(names_age)
输出结果为
['zhangsan','lisi','wangma',12,18,54]
可见,输出内容和列表中的内容是一样的,也就是输出了列表中的所有内容。
2列表元素的访问
- (此小节以之前所讲字符串的切片和索引为基础)
列表是有序集合,因此要访问列表的任何元素,只需要将该元素的索引告诉python程序即可。
names_age = ['zhangsan','lisi','wangma',12,18,54]
print(names_age[2])
输出结果为:
wangma
再次强调,在python中,第一个列表元素的索引为0,而不是1
- 在列表元素的使用中,也可以使用之前所讲字符串方法,将元素进行转换。
例如:将首字母变为大写,在字符串中使用的是.title(),在此举例
names_age = ['zhangsan','lisi','wangma',12,18,54]
print(names_age[2].title())
输出结果为
Wangma
对于最后一个列表元素的访问,python提供了一种便利语法,通过将索引指定为-1即可
names_age = ['zhangsan','lisi','wangma',12,18,54,1,2,3,4,5,6,7,8,9,11,13]
print(names_age[-1])
执行后会输出:
13
可以使用拼接合并,利用列表中的元素,创造一个消息,例如:
names_age = ['zhangsan','lisi','wangma',12,18,54,1,2,3,4,5,6,7,13]
message = 'your name is ' + name_age[0] + '.'
print(message)
输出结果为
your name is zhangsan.
3修改、添加和删除列表元素
大多数所创建的列表都是动态的,也就意味着,可以对已经创建的列表进行修改、添加、删除元素。
修改
列表修改元素其实是和访问一个元素是类似的。
例如,想要把现有元素中的wangma修改成wangwuwu:
names_age = ['zhangsan','lisi','wangma',12,18,54]
names_age[2] = 'wangwuwu'
print(names_age)
输出结果为
['zhangsan','lisi','wangwuwu',12,18,54]
可以看到,新输出的为更改后的元素。若要修改元素,直接将想要修改的值,赋值给索引即可、
添加
在列表中添加元素需要使用append()函数,这个函数可以在列表的末尾,添加一个元素。
例如,想要在元素末尾添加一个10000:
names_age = ['zhangsan','lisi','wangma',12,18,54]
names_age.append(10000)
print(names_age)
输出结果为:
['zhangsan','lisi','wangma',12,18,54,10000]
插入
在大多数情况下,不一定是要在列表的末尾加元素,因此还提供了一种在列表中插入元素的函数。也就是insert()函数,可以在想要插入的位置,插入一个元素。
例如,想在zhangsan后面插入zhangwu:
names_age = ['zhangsan','lisi','wangma',12,18,54]
names_age.insert(1,zhangwu)
print(names_age)
输出结果为:
['zhangsan','zhangwu','lisi','wangma',12,18,54]
即成功的在索引号为1的位置,插入了zhangwu
删除
在列表中,删除的方法,在这里介绍三种
del方法
例如,想通过del函数,删除zhangwu
names_age = ['zhangsan','zhangwu','lisi','wangma',12,18,54]
del names_age[1]
print(names_age)
输出结果为
['zhangsan','lisi','wangma',12,18,54]
pop()方法
例如想要删除lisi,使用pop()方法为:
names_age = ['zhangsan','zhangwu','lisi','wangma',12,18,54]
name = name_age.pop(2)
print(names_age)
输出结果为:
['zhangsan','zhangwu','wangma',12,18,54]
而通过输出打印变量name可以发现这种方法和上述del方法的区别
print(names)
输出结果为
lisi
输出的结果就是被删除的字符串的信息,它把要删除的数据临时保存下来,后续如果需要,还能继续使用,而del是将数据彻底删除。
remove()方法
当你不知道要从列表中删除的元素的位置时,可以使用这个函数来删除指定元素。
names_age = ['zhangsan','zhangwu','lisi','wangma',12,18,54]
name_age.remove(‘lisi’)
print(names_age)
输出结果为
['zhangsan','zhangwu','wangma',12,18,54]
实现了直接知道元素信息,将元素进行删除,而不需要知道元素位置。
4组织列表
当我们创建完列表之后,列表元素的顺序常常都是无规律的,但有时会以特定的顺序来呈现一个信息。
在这里,主要介绍四种列表组织方式。需要注意各个函数的使用方法不一。
使用sort()函数对列表进行永久性排序
sort()函数:将列表中的元素按照字母顺序排列(只能对字符串进行排列)
例如
names_age = ['zhangsan','zhangwu','lisi','wangma']
names_age.sort()
print(names_age)
输出结果为:
['lisi','wangma','zhangsan','zhangwu']
使用sorted()函数对列表进行临时排序
sorted()函数:不改变原来实际排列顺序,同时给出按照字母顺序排列的临时列表
例如,想要对比看一下sorted()函数的临时排序情况,方便对比,输出三次,第一次为使用临时排序后,第二次为输出列表,第三次为使用sort()函数输出。
names_age = ['zhangsan','zhangwu','lisi','wangma']
print(sorted(name_age)) #临时排序
print(names_age) #真实列表、原列表
names_age.sort()
print(names_age) #完全改变内容顺序
输出结果为
['lisi','wangma','zhangsan','zhangwu']
['zhangsan','zhangwu','lisi','wangma']
['lisi','wangma','zhangsan','zhangwu']
可见,第二次输出的列表依然是前期原列表,并未进行改变,第一次输出仅仅是临时排序后输出。
使用reverse()函数对列表进行倒着打印
reverse()函数:永久性的反转列表元素的排列顺序,可以通过再次使用该函数,恢复到原来的排列顺序。
names_age = ['zhangsan','zhangwu','lisi','wangma']
names_age.reverse()
print(names_age)
输出结果为:
['wangma','lisi','zhangwu','zhangsan']
使用len()函数确定列表的长度
len()函数:快速获取列表的长度
names_age = ['zhangsan','zhangwu','lisi','wangma']
print(len(names_age))
输出结果为
4
5遍历列表
使用for循环,依次访问列表的元素
前期讲过通过索引号来访问列表,而索引号太过复杂,因此需要for循环。
for循环举例:
names = ['zhang','wu','li','wang','zhao']
for name in names:
print(name) #注意print前空一个Tab
上述for循环代码,第一行定义列表names,将后面的元素赋值给names;第二行使用for循环来遍历names,其中的name是新定义的一个变量名,names是列表名,后面一定要记得需要一个冒号;第三行首先需要一个Tab键,然后将变量输出。方便理解,遍历的意思即为:按顺序访问每一个。
它的运行原理是,首先将列表中的第一个元素赋值给变量name,然后输出name,然后第二个元素。。。循环如此。
上面for循环输出结果为
zhang
wu
li
wang
zhao
上述运行的原始代码中,第二行与第三行是一个for循环整体,如果循环结束,可以在第四行加入一条语句,终结程序,且仅仅运行一次。如下所示:
names = ['zhang','wu','li','wang','zhao']
for name in names:
print(name) #注意print前空一个Tab
print('print end')
运行结果为:
zhang
wu
li
wang
zhao
print end
如果将其与第三行对齐,加入for循环之中,测试如下
names = ['zhang','wu','li','wang','zhao']
for name in names:
print(name) #注意print前空一个Tab
print('print end')
输出结果为
zhang
print end
wu
print end
li
print end
wang
print end
zhao
print end
因此,在以后的使用中,要注意哪些是需要循环的,哪些是不需要循环的。如果不需要循环,就不需要一个Tab键。
6操作数值列表
数值列表,即在一个列表中,他里面的元素都是由数值组成的
range()函数:生成一系列数字,它里面包括三个参数
range(start,end,scan)
参数的含义:
start是计数开始的位置,默认是从0开始
end是计数结束的位置
scan是每次跳跃的间距,默认为1
例如:
for x in range(1,10):
print(x)
输出结果为:
1
2
3
4
5
6
7
8
9
由此可见,输出结果不包括end的参数10
如果range()函数内只有一个参数,则表示会产生从0开始计数到输入参数(前一位整数)结束的整数。如下
for x in range(10):
print(x)
输出结果为
0
1
2
3
4
5
6
7
8
9
如果是3个参数,情况如下:
for x in range(1,10,3):
print(x)
输出结果为:
1
4
7
如上所示,range()函数是为了创建一系列的数值,但是并不能产生一个数值列表。使用range()创建数字列表,需要使用list()函数,将数据进行转化为列表。
例如:
numbers = list(range(1,10))
print(numbers)
输出结果为
[1,2,3,4,5,6,7,8,9] #成功将这一组数值转化为列表
- 小练习:输出10以内所有奇数的平方
思路解析:首先需要一个空列表,并且使用for循环找到10以内的奇数对其进行赋值,然后计算其平方,将结果添加进另一个新列表中,循环结束后输出新列表。
x = []
for x in range(1,10,2):
y.append(x**2)
print(y)
输出结果为
[1,9,25,49,81]
若想要更简单的代码,python提供一种列表解析法。如下
y = [x**2 for x in range(1,10,2)]
print(y)
列表解析的工作原理,首先将第一个值1赋值给x,x又将值赋值给它前面的x进行平方运算,运算结果作为第一个y值,如此循环。
- 对数字列表进行简单的统计计算
min()函数,求最小值
max()函数,求最大值
sun()函数,求总和
例如:注意函数的使用方法
x = min(1,2,3,4,5,6)
y = max(1,2,3,4,5,6)
z = [1,2,3,4,5,6]
print(x)
print(y)
print(sum(z))
1
6
21
同样min()和max()也可以改为sum()函数的使用方法,如下
z = [1,2,3,4,5,6]
print(min(z))
print(max(z))
print(sum(z))
输出结果为
1
6
21
7使用列表的一部分
- 处理列表的部分元素需要用到前期所讲过的知识——切片
创建切片,可以指定要使用的第一个元素和最后一个元素的索引。这点与range()相似
例如:
names = ['zhang','wu','li','wang','zhao']
print(names[1:3])
print(names[:3])
print(names[2:])
print(names[-3:])
输出结果分别为:
需要注意的是,第一个元素索引号为0,结尾元素不会被输出。
['wu', 'li']
['zhang', 'wu', 'li']
['li', 'wang', 'zhao']
['li', 'wang', 'zhao']
如果想要复制列表,可创建一个包含整个列表的切片,同时省略起始索引和终止索引([:])
例如:
names = ['zhang','wu','li','wang','zhao']
names2 = names[:]
print(names2)
输出结果为:
['zhang','wu','li','wang','zhao']
8元组
当我们需要一个不能被修改的列表时,就需要用到元组。
元组是不可变的列表,元组使用()来标识
元组也可以通过索引来访问其元素,也可以使用for循环遍历元组中的所有值。
例如,尝试修改元组中的数值:
tuple = (1,2,3,4,5,6,7)
tuple[2] = 100
print(tuple)
结果就会报错
Traceback (most recent call last):
File "tuple.py", line 2, in
tuple[2] = 100
TypeError: 'tuple' object does not support item assignment