Python列表的基本使用
在Python中,列表指的是按特定顺序排列的元素组成,相当于java中的List集合,下面主要针对列表的创建,使用来介绍列表的使用
1. 列表的定义
# 我们使用方括号[]来定义一个列表
list = ["a","b","c"]
2. 列表的访问
因为列表是有序集合,因此我们要访问列表中元素,可以通过索引的方式进行获取
list = ["a","b","c"]
print(list[0]) # a
如果你想使得我们访问的元素首字母大写的话,可以加上titile()
list2 = ['trek','cannondale','readline','specialized']
print(list2[0].title()) #Trek
注意:
- 列表的第一个位置的索引为0
- 如果你想访问当前列表的最后一个位置的值,可以通过将索引设置为-1,即可以访问最后一个元素
3. 列表元素的修改
直接访问想要修改位置的值,然后赋值修改即可
list = ["a","b","c"]
print(list[0]) # a
list[0] = "g"
print(list[0]) # g
4. 向列表中添加元素
append : 将元素添加至列表的末尾
insert(index,val):在列表的任意位置添加新元素
list = ['a','b','c']
list.append('d')
print(list)
list.insert(1,'e')
print(list)
输出结果:
['a', 'b', 'c', 'd']
['a', 'e', 'b', 'c', 'd']
5. 从列表中删除元素
5.1 删除指定位置的值 del 列表[index]
list = ['a','b','c','d']
del list[0] # 删除第一个位置的值'a'
5.2 删除列表末尾位置的值 pop()
list = ['a','b','c','d']
list.pop() # 删除最后一个位置的值'd'
5.3 删除指定值 remove()
list = ['a','b','c','d']
list.remove('b')
注意 :
- 方法remove()只会删除第一个指定的值
6. 组织列表
一般来说,我们创建列表,元素的排列顺序常常是无法预测的,此时,我们如果想要我们当前的列表时有序的,就可以使用对应的方法将当前列表变成有组织的列表结构
6.1 使用sort()对列表进行永久性排序
list = [5,6,34,-2,13,789]
list.sort()
print(list)
输出结果:
[-2, 5, 6, 13, 34, 789]
6.2 使用sorted()对列表进行临时性排序
如果你想要保留原来的排序顺序,只是想要特定的顺序来呈现列表,此时可以使用sorted函数
list = [5,6,34,-2,13,789]
print(sorted(list))
print(list)
输出结果:
[-2, 5, 6, 13, 34, 789] #排序的
[5, 6, 34, -2, 13, 789] #原来的顺序
当然我们可以按照逆序进行排序,此时我们在sorted函数中添加第二个参数reverse = True即可
list = [5,6,34,-2,13,789]
print(sorted(list,reverse = True))
输出结果:
[789, 34, 13, 6, 5, -2]
7. reverse()反转列表元素
list = ['abc','def','ghi']
list.reverse()
print(list)
输出结果:
['ghi', 'def', 'abc']
8. len()获取列表的长度
list = ['abc','def','ghi']
print(len(list))
9. 列表的for循环遍历
list = ['abc','def','ghi']
for val in list:
print(val)
10.数字列表的使用
列表在使用过程中非常适合用于存储数字集合,而我们在Python中可以使用以下函数生成对应的一些数字集合:
10.1 使用range()函数
使用range函数可以生成一系列的数字:
for value in range(1,5):
print(value)
输出结果:
1
2
3
4
这里range(start,end)表示从数字start开始,到end数字(不包括end数字)!
10.2 使用range函数创建数字列表
我们可以利用list()函数 + range函数生成我们需要的列表,这里
list = list(range(1,10))
print(list)
输出结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
11. 列表的常见的统计计算
- min:求最小值
- max:求最大值
- sum:求和
12. 列表的解析
此时,我们要求将1到10的平方存储到一个列表中,可以用下面语句实现:
squares = []
for value in range(1,11):
squares.append(value ** 2)
print(squares)
此时,我们可以使用下面的一行代码完成:
squares = [value ** 2 for value in range(1,11)]
print(squares)
13. 使用列表的一部分
列表[起始索引:结束索引]
其中,如果不指定起始索引,则默认从列表的起始索引开始,不指定结束索引,则默认到列表的最后一个元素
并且,这里切片包括起始索引,不包括结束索引
list = ['a','b','c','d','e','f','g']
print(list[0:3])
print(list[1:4])
print(list[:2])
print(list[2:])
输出结果:
['a', 'b', 'c']
['b', 'c', 'd']
['a', 'b']
['c', 'd', 'e', 'f', 'g']
注意:
- 因为负数索引表示返回离列表默认相应距离的元素,其中-1指的是最后一个元素
故我们如果想要返回最后三个元素,可以使用list[-3:]
同时,列表的切片我们可以使用for循环进行遍历:
list = ['a','b','c','d','e','f','g']
for value in list[-3:]:
print(value)
输出结果:
e
f
g
14. 列表的复制
如果我们想在原有的列表基础之上,创建一个原有列表的复制,此时我们可以使用列表的切片来实现,这里我们指定切片的起始索引和结束索引均为空即可!!!
list = ['a','b','c','d','e','f','g']
new_list = list[:]
print("原来的列表为:")
print(list)
print("复制的列表为:")
print(new_list)
输出结果:
原来的列表为:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
复制的列表为:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
我们尝试修改原来列表中元素,再次打印输出:
list = ['a','b','c','d','e','f','g']
new_list = list[:]
list[0] = 'h'
print("原来的列表为:")
print(list)
print("复制的列表为:")
print(new_list)
输出结果:
原来的列表为:
['h', 'b', 'c', 'd', 'e', 'f', 'g']
复制的列表为:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
13. 元组(不可变的列表)
如果你想要创建一系列不可修改的元素,则可以使用元组
其中,我们在创建元组的时候,使用圆括号而不是方括号来标识,定义元组以后,就可以使用索引来访问元素
dimensions = (1,2,34,45)
print(dimensions[0])
创建元组以后,我们试图去修改元组中元素的值:
dimensions = (1,2,34,45)
dimensions[0] = 0
输出结果:
Traceback (most recent call last):
File "D:/PycharmProjects/PhthonStudy/grammar/列表/元组.py", line 2, in <module>
dimensions[0] = 0
TypeError: 'tuple' object does not support item assignment
虽然元组中元素的值不能改变,但是我们可以使用重新赋值的方法来间接改变!!
dimensions = (1,2,34,45)
print(dimensions)
dimensions = (520,13,14)
print(dimensions)
输出结果:
(1, 2, 34, 45)
(520, 13, 14)
注意:
- 相对于列表,元组是更为简单的数据结构,如果需要存储一组值在程序的整个生命周期内都不会发生改变,可以使用元组!!!