Python基础
Python基础(四)
大家可以关注知乎或微信公众号的‘share16’,我们也会同步更新此文章。
八、元组(tuple)
8-1. 元组的定义
元组与列表类似,语法为(元素1, 元素2, ..., 元素n)
,其与列表的不同之处在于元组的元素不能修改
。
元组使用小括号 ( )
,列表使用方括号 [ ]
。
8-2. 元组的创建
用 ( )
或 tuple()
创建
- 创建一个普通/混合元组,如:x = (1,2,3,4) 或 x = 1,2,3,4 等;
- 创建一个空元组,如:x = () 等;
- 利用range()创建元组,如:x = tuple(range(10)) 等;
- 利用推导式创建元组,如:x = tuple((i ** 2 for i in range(1, 10))) 等;
注意:
- 创建元组可以用小括号 (),也可以什么都不用,为了可读性,建议还是用 ();
- 元组中
只包含一个元素
时,需要在元素后面添加逗号,否则括号会被当作运算符使用; - 利用推导式创建元组时,需要添加tuple()函数;此处是与列表推导式是有区别的,详见代码;
# 创建普通/混合元组
t1 = 1,2,3,4
t2 = (1,2,3,4)
t3 = tuple(range(5))
print(type(t1), type(t2), type(t3), sep=', ')
# >> <class 'tuple'>, <class 'tuple'>, <class 'tuple'>
# 利用推导式创建
x = [i ** 2 for i in range(1, 5)]
y = (i ** 2 for i in range(1, 5))
z = tuple(y)
print(x, type(x), sep= ', ')
print(y, type(y), sep= ', ')
print(z, type(z), sep= ', ')
# >> [1, 4, 9, 16], <class 'list'>
# >> <generator object <genexpr> at 0x10effaac0>, <class 'generator'>
# >> (1, 4, 9, 16), <class 'tuple'>
#generator 是 生成器对象
# 元组只包含一个元素,元素后面是否添加逗号的区别
print(type(({'a'},)), type(({'a'})), sep= ', ')
# >> <class 'tuple'>, <class 'set'>
8-3. 元组的常用内置函数
因元组内元素是不可更改的,故tuple[i] = x、append、extend、remove、pop等
函数,不能在元组中应用。
8-4. 解压元组
- 解压一维元组
- 解压二维元组
- 若只想要元组其中几个元素,用通配符「*」,在计算机语言中代表一个或多个元素;如把多个元素丢给
rest
变量; - 若不在乎 rest 变量,那么就用通配符「*」加上下划线「_」;
# 解压一维元组
x = (1, 4, 9, 16)
(a, b, c, d) = x
print(a, b, c, d)
# >> 1 4 9 16
# 解压二维元组
x = ((1, 4), (9, 16))
((a, b), (c, d)) = x
print(a, b, c, d)
# >> 1 4 9 16
# 通配符
x = (1, 4, 9, 16)
(a, *rest, b) = x
print(a, b, sep=', ')
print(rest, *rest, sep=', ')
# >> 1, 16
# >> [4, 9], 4, 9
# 通配符
x = (1, 4, 9, 16)
(a, *_, b) = x
print(a, b, sep=', ')
print(_, *_, sep=', ')
# >> 1, 16
# >> [4, 9], 4, 9
九、集合(set)
9-1. 集合的定义
集合是一个无序、元素不重复(元素唯一)
序列,语法为{ 元素1, 元素2, ..., 元素n }
。
因集合是无序的,所以不可以对集合索引或切片;但我们可以使用 for … in… ,把集合中的数据一个个读取出来。
9-2. 集合的创建
用 { }
或 set()
创建
- 创建一个普通/混合集合,如:x = {1,2,3,4} 等;
- 创建一个空集合,如:x = set(),因为 { } 是用来创建一个空字典;
- 利用range()创建集合,如:x = set(range(10)) 等;
- 利用推导式创建集合,如:x = {i**2 for i in range(5)} 等;
9-3. 集合的常用内置函数
# 添加元素(add、update)
x = {0, 1, 2}
y = {0, 1, 2}
x.add(3)
y.update( [2,4,6], '567')
print(x, y)
# >> {0, 1, 2, 3} {0, 1, 2, 4, 6, '6', '7', '5'}
# 删除元素(remove、discard、pop)
x = {0, 1, 2, 3}
y = {1, 2, 4, 6, '6', '7', '5'}
x.remove(0)
y.discard(10)
z = y.pop()
print(x, y, z, sep=', ')
# >> {1, 2, 3}, {2, 4, '6', 6, '7', '5'}, 1
十、字典(dict)
10-1. 字典的定义
字典是无序的、可变容器模型且可存储任意类型对象,语法为{ key1 : value1, key2 : value2, ··· , keyn : valuen }
,其中每一个元素是一个「键值对」。
dict
作为Python的关键字和内置函数,变量名不建议命名为dict;- 键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字;
10-2. 可变类型与不可变类型
- 序列是以连续的整数为索引,与此不同的是,字典以"关键字"为索引,关键字可以是任意不可变类型,通常用字符串或数值。
- 字典是 Python 唯一的一个 映射类型,字符串、元组、列表属于序列类型。
a = [10, 10.88, True, 2-3j, 'abcd', [1, 2, 3], (1, 2, 3), {1, 2, 3}, {'a':1, 'b':2}]
for i in a:
try:
hash(i)
print('{}:是不可变类型'.format(type(i)))
except TypeError :
print('{}:是可变类型'.format(type(i)))
# >> <class 'int'>:是不可变类型
# >> <class 'float'>:是不可变类型
# >> <class 'bool'>:是不可变类型
# >> <class 'complex'>:是不可变类型
# >> <class 'str'>:是不可变类型
# >> <class 'list'>:是可变类型
# >> <class 'tuple'>:是不可变类型
# >> <class 'set'>:是可变类型
# >> <class 'dict'>:是可变类型
10-3. 字典的创建
用{ }
或 dict()
创建
- 创建一个普通/混合字典,如:x = {1 : 111, 2 : 222, 3:333} 等;
- 创建一个空字典,如:x = { } 或 x = dict() ;
- 利用dict()创建字典,如:x = dict([(1, 4139), (2, 4127), (3, 4098)]) 等;
- 利用推导式创建字典,如:x = {i : i**3 for i in range(1,5)} 等;
10-4. 字典的常用内置函数
谢谢大家🌹