列表
一.列表基本概念
1.python中用方括号[ ]来表示列表,用逗号隔开元素
2.python与其他语言一样,第一个列表元素索引是从0开始而不是从1开始
3.特殊:python中用负数索引,来表示倒数第几个元素。例如,指定索引为-1返回列表最后一个元素
二.修改、添加和删除元素
1.修改:指定列表名和索引号,对列表元素重新复制即可。
2.添加:
(1)末尾添加:对列表使用方法append()
例如:name.append(‘kk’)
注:编程时常常会新建一个空列表,然后使用该方法不断再往列表中添加元素。
(2)列表中添加元素:对列表使用方法insert()
例如:name.insert(0,‘kk’)
注意:使用该方法时,需要制定新元素的索引和值
3.删除:
(1)使用del语句(前提是已知元素在列表中的位置)
例如:del name[0]
(2)使用方法pop()(若接下里仍要使用被删除元素时)
可直接使用来删除列表末尾元素;(就相当于栈中弹出栈顶元素,弹出后的元素仍可继续使用)
例如:popped_name=name.pop()
(默认弹出列表尾部的元素)
也可以弹出列表中任何位置处的元素,只需要在括号中指定要删除的元素的索引。
例如:popped_name=name.pop(1)
(3)使用方法remove()(删除指定值的列表元素)
例如:popped_name=name.remove('yu')
***注意:***
1.与pop()一样删除后的元素仍可继续使用;
2.方法remove()只删除第一个指定的值。若该值出现多次,需要用循环处理。
三.组织列表
1.使用 方法sort() 对列表进行 永久性排序
例如:name.sort()
向方法sort()传递参数 reverse=True,可对列表逆向排序
例如:name.sort(reverse=True)
(注意此处True首字母要大写,否则会报错)
2.使用 函数sorted() 对列表进行 临时性排序
例如:sorted(name)
同样可向函数传递参数 reverse=True,逆向排序显示列表
例如:sorted(name,reverse=True)
3.使用 方法reverse() 对列表进行 反向打印
例如:name.reverse()
但只需再次对列表调用reverse()就可回复到原来的排列顺序
4.使用函数len()确定列表的长度
例如:len(name)
四.for循环遍历列表
例如:
names=['yu','zhang','zhu','liu']
for name in names
print(name)
1.格式:for 变量 in 列表名:
意思是循环依次从列表中取出元素赋值给变量,然后对变量进行相应的操作。
2.注意循环体中的语句必须前面要有缩进,python中是根据缩进来判断代码行与前一个代码行的关系,这与C之类的语言用大括号表示不同。
3.for语句后一定要加冒号。
五.创建数值列表
1.使用函数range()
使用该函数可以生成一系列的数字。
主要两种用法(源自文档注释):
"""
range(stop) -> range object
range(start, stop[, step]) -> range object
Return an object that produces a sequence of integers from start (inclusive)
to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1.
start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3.
These are exactly the valid indices for a list of 4 elements.
When step is given, it specifies the increment (or decrement).
"""
例1:
for i in range(4):
print(i)
输出结果为0,1,2,3
例2:
for value in range(1,5):
print(value)
注意:
上述代码执行结果为1、2、3、4,并没有5。因为函数range()是让python从你指定的第一个值开始,并在到达你指定的第二个值后停止,所以会存在差一的情况。
2.使用函数list()将range()结果转换为数字列表
例如:
numbers=list(range(1,5))
print(numbers)
注意:
(1)将range()结果作为list()的参数即可直接将其转换为列表;
(2)使用函数range()时可以指定步长
例如:
numbers=list(range(1,5,2))
print(numbers)
则输出结果为1,3
3.数字列表常用的统计函数
numbers=list(range(1,5))
min(numbers) #最小值,结果为1
max(numbers) #最大值,结果为4
sum(numbers) #求和,结果为10
4.列表解析
功能是将for循环和创建新元素的代码合并成一行,并自动附加新元素。
例如:
squares=[value**2 for value in range(1,5)]
#使用这种语法需先指定一个列表名,然后加一对括号。括号里先定义一个表达式,
#即图中的value**2的乘方运算,再写一个for循环对变量value进行赋值
print(squars)
注意:这里面的for循环后不需要加冒号。
六.列表的部分使用
1.切片(即指列表的部分元素)
基本格式:列表名[开始索引: 终止索引: 步长]
- 开始索引:表示是第一个元素对象,正索引位置默认为0;负索引位置默认为 -len(列表名)
- 终止索引:表示是最后一个元素对象,正索引位置默认为 len(consequence)-1;负索引位置默认为 -1。
- 步长:表示取值的步长,默认为1,步长值不能为0。
例如:
names=['yu','zhang','zhu','liu']
print(names[0:2])
#结果为['yu','zhang']
注意:
(1)格式:列表名[开始元素的索引号:终止元素的索引号]
同range()函数一样,只能到达你指定的终止元素的前一个元素为止。
(2)若未指定开始元素的索引,则从头开始
names=['yu','zhang','zhu','liu']
print(names[:2])
#结果为['yu','zhang']
(3)若未指定终止元素的索引,则从开始元素的索引处到列表尾
names=['yu','zhang','zhu','liu']
print(names[1:])
#结果为['zhang','zhu','liu']
(4)若想输出最后几个列表元素,可以:
names=['yu','zhang','zhu','liu']
print(names[-2:])
#结果为['zhu','liu']
(5)遍历切片同正常遍历列表
2.复制列表
要复制列表可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引,即([ : ])
names=['yu','zhang','zhu','liu']
xingming=names[:]
print(xingming)
#结果为['yu','zhang','zhu','liu']
注意:不能单纯的将变量names赋值给变量xingming,这样做最终是让两个变量指向同一个列表,而不能得到两个新的列表。
names=['yu','zhang','zhu','liu']
xingming=names #这样无法得到新的列表,只是让两个变量指向同一个列表
七.元组
1.概念:python中将不能修改的值成为不可变的,而不可变的列表被称为元组。
2.定义元组:使用圆括号而不是方括号来标识
names=('yu','zhang','zhu','liu')
注意:若尝试对元组元素进行修改,则会报错
names=('yu','zhang','zhu','liu')
names[0]='ma' #这条语句会报错
3.遍历元组:同遍历列表
4.虽然不能修改元组元素,但可以对元组变量进行赋值
names=('yu','zhang','zhu','liu')
names=('hua','lei','gui','ze') #这条语句不会被报错,因为对元组赋值是合法的