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))) 等;

注意:

  1. 创建元组可以用小括号 (),也可以什么都不用,为了可读性,建议还是用 ();
  2. 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用;
  3. 利用推导式创建元组时,需要添加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. 字典的常用内置函数

在这里插入图片描述
在这里插入图片描述

谢谢大家🌹

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值