1、列表(list)
列表中的数据类型可以包含多种,包含数字、字符串、字典、布尔型等,并且列表中还可以嵌套列表
print(type([1, 2, 3, 4, 5, 6]))
print(type(['Hello', 'World', 1, 6]))
print(type(['Hello', 1, 2, True, 'a']))
print(type([['Hello', 1, 2, 3], [True, 1]]))
# 列表中嵌套列表
print(type([['Hello', 'World'], [1, 2, 3], [True, False]]))
print(type([['Hello', 'World'], [1, 2, 3], [True, False], {'name': 'alex', 'age': 18}]))
结果为:
<class ‘list’>
<class ‘list’>
<class ‘list’>
<class ‘list’>
<class ‘list’>
<class ‘list’>
- 列表的访问
print(["新月打击", "苍白之瀑", "月之降临", "月神冲刺"][0])
print(["新月打击", "苍白之瀑", "月之降临", "月神冲刺"][3])
print(["新月打击", "苍白之瀑", "月之降临", "月神冲刺"][0:2])
print(["新月打击", "苍白之瀑", "月之降临", "月神冲刺"][-1:])
print(["新月打击", "苍白之瀑", "月之降临", "月神冲刺"][-1])
结果为:
新月打击
月神冲刺
[‘新月打击’, ‘苍白之瀑’]
[‘月神冲刺’]
月神冲刺
可以发现,单一数字的索引来访问的时候,得到的是一个元素;用冒号的方式来访问,得到的是一个列表,哪怕这个列表只有一个元素
- 列表的操作
print(["新月打击", "苍白之瀑", "月之降临", "月神冲刺"] + ["点燃", "打击"])
print(["点燃", "打击"]*3)
结果为:
[‘新月打击’, ‘苍白之瀑’, ‘月之降临’, ‘月神冲刺’, ‘点燃’, ‘打击’]
[‘点燃’, ‘打击’, ‘点燃’, ‘打击’, ‘点燃’, ‘打击’]
注意: print([“点燃”, “打击”]-[“点燃”]) # 输出错误
2、元组(tuple)
元组中的数据类型也可以包含多种
print((1, 2, 3, 4, 5))
print((1, '-1', True, 'morning', {'name': 'alex', 'age': 18}, [1, 'Hello', '1']))
结果为:
(1, 2, 3, 4, 5)
(1, ‘-1’, True, ‘morning’, {‘name’: ‘alex’, ‘age’: 18}, [1, ‘Hello’, ‘1’])
- 元组的访问
print((1, 2, 3, 4, 5)[0])
print((1, 2, 'morning', 4, True)[0:3])
print((1, 2, 'morning', 4, True)[-1:])
print((1, 2, 'morning', 4, True)[-1])
print((1, 2, 3) + (4, 5, 6))
print((1, 2, 3) * 3)
print((1, 2)[-1:])
结果为:
1
(1, 2, 'morning')
(True,)
True
(1, 2, 3, 4, 5, 6)
(1, 2, 3, 1, 2, 3, 1, 2, 3)
(2,)
注意:单一数字的索引来访问的时候,得到的是一个元素;用冒号的方式来访问,得到的是一个元组,哪怕这个元组只有一个元素
- 类型的判断1
print(type((1, 2, 3)))
print(type(1))
print(type((1))) # 小括号代表运算符号时,比如(1+1)*2,和元组的括号有冲突,Python当括号里面只有一个元素时,规定为运算符号
# 定义只有一个元素的元组
print(type((1,)))
# 表示一个空的元组
print(type(()))
结果为:
<class 'tuple'>
<class 'int'>
<class 'int'>
<class 'tuple'>
<class 'tuple'>
- 类型的判断2
print(type("Hello"))
print(type(("Hello")))
print(type([1, 2, 3]))
print(type([1]))
结果为:
<class 'str'>
<class 'str'>
<class 'list'>
<class 'list'>
3、str list tuple ---->序列
- 每个元素都被分配一个序号
print((1, 2, 3)[2])
print('hello world'[2])
结果为:
3
l
- 都可以进行切片操作
print([1, 2, 3, 4, 5][0:3])
print([1, 2, 3, 4, 5][-1:])
print("Hello world"[0:8:2])
结果为:
[1, 2, 3]
[5]
Hlow
- 都可进行 + 和 *
- 判断元素是否在序列中
print(3 in [1, 2, 3, 4, 5])
print(3 not in [1, 2, 3, 4, 5])
结果为:
True
False
- 都可以求取序列的长度、元素的最大最小值
print(len([1, 2, 3, 4, 5, 6]))
print(len("Hello world"))
print(max([1, 2, 3, 4, 5, 6]))
print(min([1, 2, 3, 4, 5, 6]))
print(max("Hello world"))
print(min("Helloworld"))
结果为:
6
11
6
1
w
H
求取ASCII 的求取
print(ord('H'))
print(ord('w'))
print(ord(' '))
结果为:
72
119
32
4、 集合
- 无序
print(type({1, 2, 3, 4, 5, 6}))
# print({1, 2, 3, 4, 5, 6}[0]) # 错误
结果为:
<class 'set'>
- 不重复
print({1, 1, 2, 3, 6, 6})
结果为:
{1, 2, 3, 6}
- 长度
print(len({1, 2, 3}))
结果为:
3
- 剔除3,4,求集合的差集
print({1, 2, 3, 4, 5, 6}-{3, 4})
{1, 2, 5, 6}
- 求集合的交集
print({1, 2, 3, 4, 5, 6} & {3, 4})
结果为:
{3, 4}
- 两个合并成一个,不出现相同的元素,合集或并集
print({1, 2, 3, 4, 5, 6} | {3, 4, 7})
结果为:
{1, 2, 3, 4, 5, 6, 7}
- 定义一个空的集合
print(type({}))
print(type(set()))
结果为:
<class 'dict'>
<class 'set'>}
约个拓展练习可好:
快乐的LeetCode — 14. 最长公共前缀 方法2中包含了集合的巧妙使用
5、字典(dict)
形式:{key1:value1,key2:value2,key3:value3,} 。 可以有很多个key和value,属于集合类型(set),不是序列类型
- 访问
print({'Q': "新月打击", 'W': "苍白之瀑", 'R': "月之降临", 'E': "月神冲刺"}['Q'])
# 相同的key情况,尽管有结果输出
print({'Q': "新月打击", 'Q': "苍白之瀑", 'R': "月之降临", 'E': "月神冲刺"}['Q'])
# 验证发现,已经存在丢失
print({'Q': "新月打击", 'Q': "苍白之瀑", 'R': "月之降临", 'E': "月神冲刺"})
结果为:
新月打击
苍白之瀑
{'Q': '苍白之瀑', 'R': '月之降临', 'E': '月神冲刺'}
- 可以有数字类型的key
print({1: "新月打击", '1': "苍白之瀑", 'R': "月之降临", 'E': "月神冲刺"})
# key必须是不可变的类型, 数字1,字符串"1"
# 反例 print({[1, 2]: "新月打击", 'Q': "苍白之瀑", 'R': "月之降临", 'E': "月神冲刺"})
结果为:
{1: '新月打击', '1': '苍白之瀑', 'R': '月之降临', 'E': '月神冲刺'}
- value 本身可以是 int float str set dict list…
print({1: "新月打击", '1': "苍白之瀑", 'R': {1, 2, 3}, 'E': "月神冲刺"})
结果为:
{1: '新月打击', '1': '苍白之瀑', 'R': {1, 2, 3}, 'E': '月神冲刺'}
- 定义空的字典
print(type({}))
结果为:
<class 'dict'>
大家加油!
第4章 Python中表示“组”的概念与定义.mp4