Python基础语法—— 列表+元组+字典
Posted 郭怀远
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础语法—— 列表+元组+字典相关的知识,希望对你有一定的参考价值。
文章目录
一、列表和元组
列表和元组一组变量的集合,它们可以批量粗存储数据。
元组和列表是非常相似的,只是列表中存放的元素是可以修改的,而元组是不可变的(也就是不能修改),所以创建元组的时候就要设定好,不能修改调整
1. 创建列表
- 创建列表主要有两种方式
list1 = [] list2 = list() print(type(list1)) print(type(list2)) # 执行结果 <class 'list'> <class 'list'>
- 设置初始值
Python列表中是可以存放不同类型的元素的,这和C/Java差别比较大my_list = [10, 3.14, 'hello'] print(my_list) # 运行结果 [10, 3.14, 'hello']
2. 下标访问
我们可以通过下标访问操作符[]
来获取列表中的任意元素
- 从前往后访问下标是从0开始的
- Python的索引是可以取负数的(从后往前是从-1开始,也就是倒数第一个元素)
- 如果下标越界就会抛出异常
my_list = [1, 2, 3, 4, 5]
print(my_list[0])
print(my_list[3])
print(my_list[-1])
print(my_list[-5])
计算列表长度,通过len函数
my_list = [1, 2, 3, 4, 5]
print(len(my_list))
# my_list[-1]就相当于 my_list[len(my_list)-1]
3. 切片操作
通过下标能后一次获取一个元素
通过切片则是一次获取一组连续的元素,相当于一个子列表
语法格式
列表名[起始下标:结束下标:步长]
区间是左闭右开的
[起始下标:结束下标)
步长默认是1,也就是每次夸多少个元素
代码示例
lists = [1, 2, 'hello', 3.14, 'world']
print(lists[0:4:1])
print(lists[0:5:2])
print(lists[-1:-4:-1])
# 运行结果
[1, 2, 'hello', 3.14]
[1, 'hello', 'world']
['world', 3.14, 'hello']
在切片过程中可以省略前后边界
lists = [1, 2, 'hello', 3.14, 'world']
print(lists[1:]) # 省略后边界,表示获取到列表末尾
print(lists[:-1]) # 省略前边界,表示从开头开始获取
print(lists[:]) # 省略两个边界表示获取整个列表
#运行结果
[2, 'hello', 3.14, 'world']
[1, 2, 'hello', 3.14]
[1, 2, 'hello', 3.14, 'world']
lists = [1, 2, 'hello', 3.14, 'world']
print(lists[::-1])
print(lists[::1])
print(lists[::-2])
# 运行结果
['world', 3.14, 'hello', 2, 1]
[1, 2, 'hello', 3.14, 'world']
['world', 'hello', 1]
如果切片中填的数字越界了,不会有负面效果,只会尽可能的把满足条件的元素获取到
lists = [1, 2, 'hello', 3.14, 'world']
print(lists[:500])
print(lists[100:])
运行结果
[1, 2, 'hello', 3.14, 'world']
[]
4. 变量列表元素
通过for循环遍历整个列表
lists = [1, 2, 'hello', 3.14, 'world']
for tmp in lists:
print(tmp, end=' ')
print()
for i in range(len(lists)-1, -1, -1):
print(lists[i], end=' ')
# 运行结果
1 2 hello 3.14 world
world 3.14 hello 2 1
5. 新增元素
- 使用
append
方法,向列表末尾插入一个元素
lists = [1, 2, 'hello', 3.14, 'world']
lists.append(1000)
lists.append('test')
print(lists)
# 运行结果
[1, 2, 'hello', 3.14, 'world', 1000, 'test']
- 使用insert方法,向任意位置插入一个元素
lists = [1, 2, 'hello', 3.14, 'world']
print(lists)
lists.insert(2, 'hahaha')
print(lists)
# 运行结果
[1, 2, 'hello', 3.14, 'world']
[1, 2, 'hahaha', 'hello', 3.14, 'world']
6. 查看元素
- 使用
in
操作符,判断元素是否在列表中存在,相反not in
则是判断元素是否不在列表中
lists = [1, 2, 'hello', 3.14, 'world']
print('hello' in lists)
print(2 in lists)
print(44 in lists)
print(44 not in lists)
# 运行结果
True
True
False
True
- 使用
index
方法。查找元素在列表中的下标,放回一个整数,如果元素不存在就会抛出异常
lists = [1, 2, 'hello', 3.14, 'world']
print(lists.index(2))
print(lists.index('haha')) # 不存在会抛异常
7. 删除元素
- 使用
pop
方法删除最末尾的元素,也可以使用下标来删除元素
lists = [1, 2, 'hello', 3.14, 'world']
print(lists.pop())
print(lists)
lists.pop(2)
print(lists)
# 运行结果
world
[1, 2, 'hello', 3.14]
[1, 2, 3.14]
- 使用
remove
,按照值来删除元素
lists = [1, 2, 'hello', 3.14, 'world']
lists.remove(2)
lists.remove('hello')
print(lists)
# 运行结果
[1, 3.14, 'world']
8. 合并列表
- 使用
+
能够把两个列表拼接起来,返回一个新列表不会影响到就列表
my_list = [10, 3.14, 'hello']
lists = [1, 2, 'hello', 3.14, 'world']
print(my_list + lists)
print(lists + my_list)
# 运行结果
[10, 3.14, 'hello', 1, 2, 'hello', 3.14, 'world']
[1, 2, 'hello', 3.14, 'world', 10, 3.14, 'hello']
- 使用
extend
方法,相当于把一个列表拼接到另一列表后面
注意:a.extend(b),是把b中的内容拼接到a的末尾,不会修改b但是会修改a
my_list = [10, 3.14, 'hello']
lists = [1, 2, 'hello', 3.14, 'world']
my_list.extend(lists)
print(my_list)
print(lists)
# 运行结果
[10, 3.14, 'hello', 1, 2, 'hello', 3.14, 'world']
[1, 2, 'hello', 3.14, 'world']
- 使用
append
方法则是把整个列表当成一个元素拼接到后面
my_list = [10, 3.14, 'hello']
lists = [1, 2, 'hello', 3.14, 'world']
my_list.append(lists)
print(my_list)
print(lists)
# 运行结果
[10, 3.14, 'hello', [1, 2, 'hello', 3.14, 'world']]
[1, 2, 'hello', 3.14, 'world']
9. 关于元组
元组的功能和列表相比基本是相同的,只不过元组是不可变的
元组的创建,元组使用 ()
来表示
my_tuple = tuple()
a_tuple = ()
print(type(my_tuple))
print(type(a_tuple))
# 运行结果
<class 'tuple'>
<class 'tuple'>
元组的访问
my_tuple = ('a', 10, 3.14)
print(my_tuple[2])
# 运行结果
3.14
元组不能修改,但切片、遍历、in、inde、+ 等操作也是一样支持的,像增删改这些操作就不支持了
my_tuple = ('a', 10, 3.14)
a_tuple = ('hello', 66)
print(my_tuple[:5])
print(my_tuple.index(10))
print(my_tuple + a_tuple)
print('hello' in a_tuple)
# 运行结果
('a', 10, 3.14)
1
('a', 10, 3.14, 'hello', 66)
True
另外,元组在Python中很多时候是默认的集合类型,列如,当一个函数要返回多个返回值的时候
def test():
return 10, 'hello'
ret = test()
print(type(ret))
# 运行结果
<class 'tuple'>
10. 小结
既然有了列表,为啥还需要元组?
- 你有一个列表, 现在需要调用一个函数进行一些处理. 但是你有不是特别确认这个函数是否会把你的列表数据弄乱. 那么这时候传一个元组就安全很多
- 字典是一个键值对结构. 要求字典的键必须是 “可hash对象” (字典本质上也是一个hash表). 而一个可hash对象的前提就是不可变. 因此元组可以作为字典的键, 但是列表不行.
- 如果元素不需要改变, 则优先考虑元组.
- 如果元素需要改变, 则优先考虑列表
二、字典
1. 字典是啥?
在Python中字典是一种存储键值对的结构,一个 key 对应一个 value。且这个键(key)一定是唯一的
底层使用的哈希表,它的增删改查都是常数级的。
2. 创建字典
- 创建空的字典,使用
表示字典
amap =
my_map = dict()
print(type(amap))
print(type(my_map))
# 运行结果
<class 'dict'>
<class 'dict'>
- 也可以在创建的同时指定初始值
- 键值对之间使用逗号
,
分割,键和值使用冒号:
分割
# 最后一个键值对的逗号可写可不写
student =
'name': 'zhangsan',
'sex': 'boy',
'age': 18
print(student)
# 运行结果
'name': 'zhangsan', 'sex': 'boy', 'age': 18
3. 查找key
- 使用
in
可以判定key
是否在字典中存在,返回 布尔值student = 'name': 'zhangsan', 'sex': 'boy', 'age': 18 print('name' in student) print('phone' in student) # 运行结果 True False
- 使用
[]
通过类似于取下标的方式,获取到元素的值,只不过此处的下标是 键(key),这个键可以是整数也可以是字符串或者是其它类型
student =
'name': 'zhangsan',
'sex': 'boy',
'age': 18,
666: 'id'
print(student['name'])
print(student[666])
# 运行结果
zhangsan
id
- 注意如果key在字典中不存在就会抛出异常
4. 新增&修改元素
使用 []
可以根据key来新增/修改value
- 如果key不存在,对取下标操作赋值,即为新增键值对
student =
'name': 'zhangsan',
'sex': 'boy',
'age': 18,
666: 'id'
student[666] = 9494
print(student)
# 运行结果
'name': 'zhangsan', 'sex': 'boy', 'age': 18, 666: 9494
- 如果key已经存在,对取下标操作赋值,就是进行修改操作
student =
'name': 'zhangsan',
'sex': 'boy',
'age': 18,
666: 'id'
student['name'] = 'lisi'
print(student)
# 运行结果
'name': 'lisi', 'sex': 'boy', 'age': 18, 666: 'id'
5. 删除元素
- 使用pop方法根据key删除对应的键值对
student =
'name': 'zhangsan',
'sex': 'boy',
'age': 18,
666: 'id'
student.pop(666)
print(student)
# 运行结果
'name': 'zhangsan', 'sex': 'boy', 'age': 18
6. 遍历字典元素
- 直接使用for循环能够获取到字典中所有key,进一步的就可以去除每个值了
student =
'name': 'zhangsan',
'sex': 'boy',
'age': 18,
666: 'id'
for key in student:
print(key, student[key])
# 运行结果
name zhangsan
sex boy
age 18
666 id
7. 取出所有key和value
- 使用
keys
方法可以获取到字典中所有的key
student =
'name': 'zhangsan',
'sex': 'boy',
'age': 18,
666: 'id'
print(student.keys())
# 运行结果
dict_keys(['name', 'sex', 'age', 666])
此处 dict_keys 是一个特殊的类型, 专门用来表示字典的所有 key. 大部分元组支持的操作对于
dict_keys 同样适用
- 使用
values
方法可以获取到所有字典中的所有value
student =
'name': 'zhangsan',
'sex': 'boy',
'age': 18,
666: 'id'
print(student.values())
# 运行结果
dict_values(['zhangsan', 'boy', 18, 'id'])
此处 dict_values 也是一个特殊的类型, 和 dict_keys 类似
- 使用
items
方法可以获取到字典中所有的键值对
student =
'name': 'zhangsan',
'sex': 'boy',
'age': 18,
666: 'id'
print(student.items())
# 运行结果
dict_items([以上是关于Python基础语法—— 列表+元组+字典的主要内容,如果未能解决你的问题,请参考以下文章