Python学习笔记--列表、字典、集合、元组

Python学习笔记

43-列表

# 列表主要是用来存储多个数据.列表是有序的集合
list_1 = []  # 创建一个空的列表

list_2 = [12, 34, 56, True, 'abc']  # 创建一个列表

# 列表的访问,通过下标访问列表中的元素,下标默认从0开始,0表示第一个元素,-1表示最后一个元素
list_3 = [1, 2, 3, False, True, 'abc']
print(list_3[0])  # 1
print(list_3[-1])  # abc

# 修改列表中的元素
list_3[0] = 100
print(list_3)  # [100, 2, 3, False, True, 'abc']

# 遍历列表
for item in list_3:  # item表示列表中的每一个元素
    print(item)
for i in range(len(list_3)):  # i表示下标
    print(list_3[i])
for index, value in enumerate(list_3):  # 同时获取下标和值
    print(index, value)

44-列表元素的合并、重复、判断

list_1 = ["佛跳墙", "跳水", "跳河"]
list_2 = [1, 2, 3, True]
print(list_1, list_2)
print(list_1 + list_2)  # 列表的合并

print(list_1 * 4)  # 列表的复制(重复)

list_3 = [1, 2, 3, "张三", "张五", "张四"]
if "张三" in list_3:
    print("张三在列表中")
else:
    print("张三不在列表中")

if "张六" not in list_3:
    print("张五不在列表中")
else:
    print("张五在列表中")

45-列表的切片

list_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(list_1[2:5])  # [3, 4, 5] 获取指定范围的元素
print(list_1[2:])  # [3, 4, 5, 6, 7, 8, 9]
print(list_1[:5])  # [1, 2, 3, 4, 5]
print(list_1[:])  # [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list_1[-2:])  # [8, 9]
print(list_1[::2])  # [1, 3, 5, 7, 9]
print(list_1[::-1])  # [9, 8, 7, 6, 5, 4, 3, 2, 1] 列表倒序

46-列表中添加元素

list_1 = [1, 2, 3, "香妃", "乾隆", "汉武帝", "汉武帝"]
print(list_1)
list_1.append("王安石")
print(list_1)

list_1.extend([1, 2, 3])  # 列表合并(追加多个元素)
print(list_1)

list_1.insert(2, "王安石")  # 在指定位置插入元素
print(list_1)

47-列表中删除元素

list_1 = ["康熙", "雍正", "乾隆", "嘉庆", "咸丰", "光绪", "咸为"]
print(list_1)

list_1.pop()  # 删除最后一个元素
print(list_1)
list_1.pop(3)  # 删除指定位置的元素
print(list_1)

list_1.remove("雍正")  # 删除指定元素的元素
print(list_1)

list_1.clear()  # 清空列表
print(list_1)

48-列表的翻转、排序

list_1 = [1, 2, 3, 4, 5, 9, 8, 7, 6]
print(list_1)

list_1.reverse()  # 翻转
print(list_1)

list_1.sort()  # 排序(升序)
print(list_1)

list_1.sort(reverse=True)  # 排序(降序)
print(list_1)

print(sorted(list_1))  # 临时排序(默认升序),不改变原列表,返回排序后的新列表
print(list_1)
print(sorted(list_1, reverse=True))  # 临时排序(降序),不改变原列表,返回排序后的新列表
print(list_1)

list_2 = ["hello", "world", "python", "a", "yes", "no", "now"]
print(list_2)
list_2.sort(key=len)  # 按字符串长度排序
print(list_2)

49-多维列表

list_1 = [1, 2, 3, 3.14, True, "Hello"]  # 一维列表
print(list_1)
print(list_1[3])

list_2 = [1, 2, 3, 3.14, True, "Hello", [1, False, 'hello']]  # 二维列表
print(list_2)
print(list_2[6])  # [1, False, 'hello']
print(list_2[6][1])  # 输出:False
print(list_2[6][1:])  # 输出:[False, 'hello']
print(list_2[6][2][2])  # 输出:l
print(list_2[6][2][2:5])  # 输出:llo

list_3 = [1, 2, 3, 4, 5, 6, ['hello', 3.14, [123, 456, 7.89]], 7, 8, 'name']  # 三维列表
print(list_3)
print(list_3[5])  # 6
print(list_3[6])  # ['hello', 3.14, [123, 456, 7.89]]
print(list_3[6][2])  # [123, 456, 7.89]
print(list_3[6][2][2])  # 7.89

50-列表生成式

list_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list_1)
list_2 = list(range(1, 11))
print(list_2)

# 需求:生成[4, 9, 16, 25, 36, 49]
# 第一种方式(原生方式)
list_3 = []
for i in range(2, 8):
    list_3.append(i ** 2)
print(list_3)  # [4, 9, 16, 25, 36, 49]
# 第二种方式
list_4 = [i ** 2 for i in range(2, 8)]  # 列表生成式
print(list_4)  # [4, 9, 16, 25, 36, 49]


list_5 = [i for i in range(1, 11, 2)]  # 奇数(列表生成式)
print(list_5)  # [1, 3, 5, 7, 9]
list_6 = [i for i in range(1, 11) if i % 2 == 1]  # 奇数(列表生成式)
print(list_6)  # [1, 3, 5, 7, 9]

list_7 = [i for i in range(1, 11) if i % 2 == 1 and i % 3 == 0]  # 奇数且被3整除(列表生成式)
print(list_7)  # [3, 9]
list_8 = [i + j for i in 'abc' for j in '123']  # 双重循环(列表生成式)
print(list_8)  # ['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']

# 注意:列表生成式一般用于逻辑简单的列表的生成;复杂的建议原生方式!

51-字典

"""
列表:适合存储相似的数据,比如多个商品,多个姓名,多个时问
字典:适合行储不同的数据,比如一个商品的个同信息,一个人的个同信息
"""
# 注意:每个字典里面的key都是唯一的,如果出现了多个key的情况,后面的key会覆盖前面的key.

dict_1 = {}  # 创建一个空的字典

# 第一种方式创建字典(常用方式,直观)
dict_2 = {"name": "张三", "age": 18, "sex": "男", "address": "北京"}  # 创建一个字典
print(dict_2)

# 第二种方式创建字典,dict(key_1=value_1, key_2=value_2);key 键,value 值
dict_3 = dict(color="red", size=20, price=100)
print(dict_3)  # {'color': 'red', 'size': 20, 'price': 100}

# 第三种方式创建字典,dict(zip([key_1, key_2......], [value_1, value_2......]))
# 注意:当key的数量和value的数量不一致时,以数量少的为基准
dict_4 = dict(zip(["name", "age", "sex"], ["张三", 18, "男"]))
print(dict_4)  # {'name': '张三', 'age': 18, 'sex': '男'}
dict_5 = dict(zip(["name", "age", "sex", "address"], ["张三", 18, "男", "北京", "上海", 100]))
print(dict_5)  # {'name': '张三', 'age': 18, 'sex': '男', 'address': '北京'}

# 第四种方式创建字典
dict_6 = dict([("name", "张三"), ("age", 18), ("sex", "男")])
print(dict_6)  # {'name': '张三', 'age': 18, 'sex': '男'}

52-字典元素获取

dict_1 = {'name': 'zhangsan', 'age': 18, 'gender': 'male'}
print(dict_1)

# 第一种方式获取(不存在的key,会报错)
print(dict_1['name'])  # zhangsan

# 第二种方式获取(不存在的key,不会报错,返回None)
print(dict_1.get('name'))  # zhangsan


print(len(dict_1))  # 3, 字典长度

print(dict_1.keys())  # 获取字典的key以列表输出,dict_keys(['name', 'age', 'gender'])

print(dict_1.values())  # 获取字典的value以列表输出,dict_values(['zhangsan', 18, 'male'])

print(dict_1.items())  # 获取字典的key和value以列表输出,dict_items([('name', 'zhangsan'), ('age', 18), ('gender', 'male')])

# 遍历字典长度
# 第一种遍历方式(i表示字典key)
for i in dict_1:
    print('第一种遍历方式(i表示字典key)', i)  #
# 第二种遍历方式(获取key, 下标)
for k, v in enumerate(dict_1):
    print('第二种遍历方式(获取key, 下标)', k, '-----', v)
# 第三种遍历方式(获取key,value)(推荐)
for k, v in dict_1.items():
    print('第三种遍历方式(获取key,value)', k, '--', v)
# 第四种遍历方式(获取value)
for v in dict_1.values():
    print('第四种遍历方式(获取value)', v)

53-字典增加、删除、修改

dict_1 = {'name': 'zhangsan', 'age': 18, 'sex': 'male'}
dict_2 = {'height': 171, 'width': 150}
print(dict_1)
print(dict_2)
dict_1.update(dict_2)  # 更新字典(合并字典),如果键相同,则覆盖
print(dict_1)

dict_3 = {'name': 'lisi', 'age': 20}
print(dict_3)  # {'name': 'lisi', 'age': 20}
dict_3['color'] = 'red'  # 添加键值对
print(dict_3)  # {'name': 'lisi', 'age': 20, 'color': 'red'}

dict_3['color'] = '土豪金'  # 修改键值对
print(dict_3)  # {'name': 'lisi', 'age': 20, 'color': '土豪金'}

dict_4 = {'name': '华为', 'size': 8, 'price': 8888, 'color': '土豪金'}
print(dict_4)
# 第一种删除方法
dict_4.pop('color')
print('第一种删除方法', dict_4)  # {'name': '华为', 'size': 8, 'price': 8888}
# 第二种删除方法
dict_4.popitem()  # 默认删除最后一个键值对
print('第二种删除方法', dict_4)  # {'name': '华为', 'size': 8}
# 第三种删除方法
dict_4.clear()  # 清空字典
print('第三种删除方法', dict_4)  # {}

54-集合

# 特点是:不允许有重复的元素,可以进行交集,并集,差集的运算
# 本质是:无序,无重复的集合

set_1 = set()  # 创建一个空的集合
print(set_1)  # set()

set_2 = {1, 2, 3}  # 创建一个集合
set_3 = {'hello', 1, 2, True}  # 创建一个集合

55-集合常见操作

set_1 = {1, 2, 3, 4, 5, 'jack', 'tom', False}

print(len(set(set_1)))  # 获取集合的长度
# print(set_1[0])  # 集合不支持索引

set_2 = {2, 3, 4, 5, 6}
print(set_2)
set_2.add(7)  # 添加元素
print(set_2)  # {2, 3, 4, 5, 6, 7}
set_2.update([1, 8])  # 添加多个元素,以列表形式添加
print(set_2)  # {2, 3, 4, 5, 6, 7, 1, 8}

set_2.pop()  # 删除一个元素,随机删除
print(set_2)  #
set_2.remove(2)  # 删除指定元素,如果元素不存在,则报错
print(set_2)
set_2.discard(3)  # 删除指定元素,如果元素不存在,则不报错
print(set_2)
set_2.clear()  # 清空集合
print(set_2)  # set()

# 遍历集合
set_3 = {1, 2, 3, 4, 5}
for item in set_3:
    print(item)

set_4 = {1, 2, 3, 4, 5}
set_5 = {3, 4, 5, 6, 7}
print(set_4 & set_5)  # & 取交集,{3, 4, 5}
print(set_4 | set_5)  # | 取并集,{1, 2, 3, 4, 5, 6, 7}
print(set_4 - set_5)  # - 取差集,{1, 2}
print(set_4 ^ set_5)  # ^ 取对称差集,{1, 2, 6, 7}
print(set_4 <= set_5)  # <= 判断是否为子集
print(set_4 >= set_5)  # >= 判断是否为超集
print(set_4 < set_5)  # < 判断是否为子集,set_4是否包含set_5
print(set_4 > set_5)  # > 判断是否为超集,set_5是否包含set_4

56-元组

# 元组一般用来存储多个数据,使用()
tuple_1 = ()  # 空元组
print(tuple_1)  # ()

# 元组中只有一个元素,一般要在元素的后面加,若不加,该数据类型不一定是元组,取决于元素的数据类型
tuple_2 = (1)
print(type(tuple_2))  # <class 'int'>
tuple_3 = ('a')
print(type(tuple_3))  # <class 'str'>
tuple_4 = (1,)
print(type(tuple_4))  # <class 'tuple'>

# 元组中的元素可以是不同的数据类型
tuple_5 = ('a', 1, 1.1, True)
print(tuple_5)  # ('a', 1, 1.1, True)
print(type(tuple_5))  # <class 'tuple'>

# 元组元素的访问,通过下标访问
print(tuple_5[0])  # a
print(tuple_5[-1])  # True

# 元组元素是不可修改的,不能修改元组中的元素
tuple_5[0] = 'b'  # TypeError: 'tuple' object does not support item assignment

# 删除元组
del tuple_5  # 删除元组

57-元组的合并、重复、判断

tuple_1 = (1, 3.14, 'hello', True)
tuple_2 = (6, 7.89, 'world', False)
print(tuple_1)  # (1, 3.14, 'hello', True)
print(tuple_2)  # (6, 7.89, 'world', False)

# 元组的合并
print(tuple_1 + tuple_2)  # (1, 3.14, 'hello', True, 6, 7.89, 'world', False)

# 重复元组中的元索
print(tuple_1 * 3)  # (1, 3.14, 'hello', True, 1, 3.14, 'hello', True, 1, 3.14, 'hello', True)
print(tuple_2 * 2)  # (6, 7.89, 'world', False, 6, 7.89, 'world', False)

# 判断元组中是否包含某个元素
print(1 in tuple_1)  # True
print(2 in tuple_1)  # False
print('hello' not in tuple_1) # False
print('world' not in tuple_1) # True

58-元组的切片

tuple_1 = (1, 2, 3.14, 'hello', True, 'world', '水电费')

print(tuple_1[0:4])  # (1, 2, 3.14, 'hello')
print(tuple_1[4:])  # (True, 'world', '水电费')
print(tuple_1[:4])  # (1, 2, 3.14, 'hello')
print(tuple_1[::2])  # (1, 3.14, True, '水电费')
print(tuple_1[::-1])  # ('水电费', 'world', 'hello', 3.14, 2, 1)
print(tuple_1[-1::-1])  # ('水电费', 'world', 'hello', 3.14, 2, 1)

59-元组常见操作

tuple_1 = (1, 2, 3.14, 'hello', True, 'world', '水电费')

print(len(tuple_1))  # 获取元组长度

tuple_2 = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(max(tuple_2)) # 获取最大值
print(min(tuple_2)) # 获取最小值

tuple_3 = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(sum(tuple_3))  # 获取总和

# 将其他数据类型转换为元组
list_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'hello', True]
tuple_4 = tuple(list_1)  # 将列表转换为元组
print(tuple_4)  # (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'hello', True)

str_1 = 'hello world'
tuple_5 = tuple(str_1)  # 将字符串转换为元组
print(tuple_5)  # ('h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd')

# 元组遍历
for i in tuple_1:
    print(i)
for j in range(len(tuple_1)):
    print(j, tuple_1[j])
for k, v in enumerate(tuple_1):
    print(k, v)

60-多维元组

tuple_1 = (1, 2, 3.14, 'hello', True, 'world', '水电费')  # 一维元组

tuple_2 = (1, 2, 3.14, 'hello', ('阿萨德', True, '森岛帆高'), 'world', '水电费')  # 二维元组
print(tuple_2[4][1])  # True 

tuple_3 = (1, 2, 3.14, 'hello', ('阿萨德', True, ('get', False), '森岛帆高'), 'world', '水电费')  # 三维元组
print(tuple_3[4][2][0])  # get

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值