网站建设私活,诸暨做网站广告的电话,广告营销策划书,什么企业网站能自己做文章目录二. 数据类型2.1 元组 tuple2.1.1 定义特性2.1.2 拼接拷贝2.1.3 元组拆包2.1.4 元组方法 count2.2 列表 list2.2.1 基础定义2.2.2 增删操作2.2.3 连接联合2.2.4 其他常规操作2.2.5 列表推导式2.2.6 生成器表达式2.x 小结#xff1a;何时使用元组或列表二. 数据类型 Py…
文章目录二. 数据类型2.1 元组 tuple2.1.1 定义特性2.1.2 拼接拷贝2.1.3 元组拆包2.1.4 元组方法 count2.2 列表 list2.2.1 基础定义2.2.2 增删操作2.2.3 连接联合2.2.4 其他常规操作2.2.5 列表推导式2.2.6 生成器表达式2.x 小结何时使用元组或列表二. 数据类型 Python内置的数据类型远不止元组和列表本篇介绍元组和列表。 Python中的内置数据类型有
数字int整数、float浮点数、complex复数字符串str字符串列表list列表元组tuple元组集合set集合、frozenset不可变集合字典dict字典布尔值bool布尔值NoneNone空
2.1 元组 tuple
2.1.1 定义特性 元组是一种固定长度、不可变的Python对象序列。 定义最简单的方法是用逗号分隔复杂的表达式需要通过括号将值包起来。
# 定义1简单元组
tup 4,5,6
# 定义2生成元素是元组的元组
nested_tup (4,5,6),(8,9)转化可以使用tuple将任意序列或迭代器转换为元组
tup tuple([4,0,2])
# tup (4,0,2)
tup tuple(str)
# tup (s,t,r)获取元组的元素可以通过中括号[]获取从0开始。
tup[0] # s不变特性各位置上的对象是无法被修改的。
tup tuple([foo,[1,2],True])
tup[2] False # TypeError: tuple object does not support item assignment可变特性但是元组内的一个对象是可变的则可以从内部修改
tup[1].append(3)
tup # (foo, [1, 2, 3], True)2.1.2 拼接拷贝
拼接可以使用 号拼接元组。
tup2 11,22,33
tup tup tup2 # (foo, [1, 2, 3], True, 11, 22, 33)拷贝元组也可以通过乘一个整数生成含有多份拷贝的元组。注意对象自身未复制只是复制引用。
tup 1,2
tup tup * 3
tup # (1, 2, 1, 2, 1, 2)2.1.3 元组拆包
元组拆包即便是嵌套元组也可以拆包。Javascript里面的说法是 解构
tup (4,5,(6,7))
a,b,(c,d) tup
b # 5
c # 6拆包优势更轻易地交换变量名。
# 常规方法
tmp a
a b
b tmp
# 拆包方法
a,b b,a当然还可以用于遍历元组或列表组成的序列
seq [(1,2,3),(4,5,6),(7,8,9)]
for a,b,c in seq: //...更高级的拆包使用特殊语法 * ,从元组的起始位置采集一些元素。
values 1,2,3,4,5,6
a,b,*rest values
a,b # (1, 2)
rest # [3, 4, 5, 6]2.1.4 元组方法 count
使用count计量某个数值在元组中出现的次数
a (1,2,2,2,3,2)
a.count(2) # 42.2 列表 list
2.2.1 基础定义 与元组不同列表的长度是可变的包含的内容也可以修改。 定义可以使用[] list 类型函数来定义列表。
a_list [2,3,4,None]tup (foo,bar)
b_list list(tup)
b_list[1] boo
b_list # [foo,boo]gen range(10)
gen # range(0, 10)2.2.2 增删操作
尾部增加使用append方法可以将元素添加到列表的尾部。
b_list.append(cool)
b_list # [foo, boo, cool]指定位置增加使用insert方法可以将元素插入到指定的列表位置。
b_list.insert(1,red)
b_list # [foo, red, boo, cool]指定位置删除使用pop操作移除特定位置的元素并返回。
b_list.pop(2) # boo指定元素删除使用remove方法可以定位第一个符合要求的值并移除。
b_list.append(foo)
b_list # [foo, red, cool, foo]
b_list.remove(foo)
b_list # [red, cool, foo]查询可以使用in关键字检查值是否在列表中前面加not关键字 表示”不在“。
foo in b_list # True
foo not in b_list # False2.2.3 连接联合
同元组可以使用进行连接如果存在一个列表可以使用extend方法向该列表增加多个元素
list1[喷火龙,杰尼龟]
list2[妙蛙种子,皮卡丘]
list1.extend(list2)
print(list1) # [喷火龙, 杰尼龟, 妙蛙种子, 皮卡丘]易错点append
注意如果list1拼接list2时使用了方法append()最后得到的结果并不是一个线性扁平化的列表而是将list2作为一个元素放入列表中。其形式如下
list1.append(list2)
# [喷火龙, 杰尼龟,[妙蛙种子, 皮卡丘]]2.2.4 其他常规操作
列表还有其他常见的操作
index: 查找列表中第一个匹配的元素的索引count: 统计列表中指定元素出现的次数sort: 对列表进行排序reverse: 对列表进行反转
除此之外元组所支持的切片列表也支持。
2.2.5 列表推导式
列表还支持一些高级特性如列表推导式和生成器表达式。列表推导式是一种简洁的方式来创建列表而生成器表达式则可以在不创建完整的列表的情况下生成列表中的元素。
列表推导式(List Comprehension)是Python中一种简洁的创建列表的方法。它可以用来快速地创建一个新列表并在创建过程中对元素进行过滤和转换。
列表推导式的语法如下:
new_list [expression for item in old_list if condition]其中expression表示对item的转换condition表示对item的过滤条件。
例如下面的代码使用列表推导式创建一个新列表其中包含原列表中所有奇数的平方:
old_list [1, 2, 3, 4, 5]
new_list [x**2 for x in old_list if x % 2 ! 0]
print(new_list) # 输出[1, 9, 25]列表推导式非常简洁可以简化很多常规代码在处理数据时非常方便。除此之外还有字典推导式和集合推导式都是用来简化创建字典和集合的代码的。
2.2.6 生成器表达式
生成器表达式(Generator Expression)是Python中一种可以在不创建完整的列表的情况下生成列表中元素的方法。它与列表推导式非常类似但是使用小括号() 来代替方括号 []。
生成器表达式的语法如下:
gen (expression for item in old_list if condition)例如下面的代码使用生成器表达式生成一个生成器其中包含原列表中所有奇数的平方:
old_list [1, 2, 3, 4, 5]
gen (x**2 for x in old_list if x % 2 ! 0)
print(next(gen)) # 输出 1
print(next(gen)) # 输出 9
print(next(gen)) # 输出 25生成器表达式在创建时并不会立即生成整个列表而是在迭代时才生成元素。因此它可以节省内存空间对于处理大量数据时非常有用。生成器表达式还可以和其他迭代器结合使用如与itertools库中的函数组合使用。
2.x 小结何时使用元组或列表
元组和列表都是Python中的内置数据类型用于存储一组元素。但是它们在语义和使用方面有很大的不同。
使用元组当需要存储的数据是固定不变的或者希望保证数据不会被意外修改时使用元组。
元组中的元素是有序的在遍历元组时元素的顺序是固定不变的。元组的语法更加简洁代码更加整洁。元组可以被用作字典的键或集合的元素因为它们是不可变的。
使用列表当需要经常添加、删除、修改数据时使用列表。
列表中的元素是有序的可以通过索引随意访问元素。列表支持sort方法可以很方便地对列表中的元素进行排序。列表支持extend和append方法可以方便地扩展列表。
总体来说元组适用于存储不变的数据列表适用于存储可变的数据。选择使用哪种数据结构取决于你的需求。