一.Python列表(list)
Python 支持多种复合数据类型,可将不同值组合在一起。最常用的**列表** ,是用方括号标注,逗号分隔的一组值。列表可以包含不同类型的元素,但一般情况下,各个元素的类型相同
# 列表,是一种复合数据(数据容器)
x = [10,20,3.14,10+20j,True,"a"]
print(x)
1、访问列表中的值
1.1 索引
与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,依此类推。
1.2 反向索引
索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,以此类推。
1.3 切片索引
使用下标索引来访问列表中的值,同样你也可以使用方括号 [] 的形式截取字符
注意:切片是浅拷贝操作
# 取列表中的数据,列表的索引(下标,index)不能超出索引范围(越界)
y1 = x[0]
y2 = x[-1]
y3 = x[5]
print(y1,y2,y3,sep="-")
print(len(x))
# 循环打印列表中的元素
x = [100,200,50,23,1222,55,44,88,9,6,44,41,5,23,5,8]
for i in range(len(x)):
print(x[i],end=" ")
print(f"\n{len(x)}")
for el in x:
print(x,end=" ")
print("\n")
# 切片索引
x = [10,20,30,40,50,60,70]
x2 = x[3:5]
print("x2:",x2)
x3 =x[2:-2]# 从左往右取数据,从下标2对应的元素开始取到下标为-2的数据。
print("x3:",x3)
x4 = x[-1:4]# 如果切片的范围没能取到任何元素,就会得到一个空的列表(不会报错)
print("x4:",x4)
x5 = x[5:100]# 如果切片范围超过原列表范围,超过的范围同样为空(不会报错)
print("x5:",x5)
x6 = x[:4]# 省略前面的,表示从零开始
print("x6:",x6)
x7 = x[4:]# 省略后面的,表示到len()结束
print("x7:",x7)
x8 = x[:-1]# 表示空列表
print("x8:",x8)
x9 = x[-1:]# 表示取最后一个元素组成列表
print("x9:",x9)
x10 = x[1:7:2]# 步长为2
print("x10:",x10)
x11 = x[:7:2]# 0,2,4,6
print("x11:",x11)
x12 = x[1:5:-1] # 不行,取的为空。一般步长为负数前面两个都不填。
print(x12)
# 把一个列表反转
x13 = x[::-1]
对于浅拷贝与深拷贝:
# 切片生成的是一个新列表。
# 列表中切片的元素是一种浅拷贝过来的元素,浅切片
# 切片后,新列表中的元素和原列表中切片范围的元素“长得一样”,是通过浅拷贝得到的。
x = [[2,3],10,20,30,40,50,60]
x2 = x[:5]
print("x",x)
print("x2:",x2)
print(id(x),id(x2))# x和x2不是同一个id
print(id(x[0]),id(x2[0]))# 指向同一个引用
print(id(x[1]),id(x2[1]))
x2[0][0] = 1
print("x2的下标0对应的列表元素被修改后的x2:",x2)
print("x2的下标0对应的列表元素被修改后的x:",x)
# 深拷贝
x = [[2,3],10,20,30,40,50,60]
x3 = copy.deepcopy(x[:5])
print(id(x),id(x3))# x和x3不是同一个id
print(id(x[0]),id(x3[0]))# 不指向同一个引用
x3[0][0] = 1
print("x3的下标0对应的列表元素被修改后的x3:",x3)
print("x3的下标0对应的列表元素被修改后的x:",x)
# 浅拷贝
x = [[2,3],10,20,30,40,50,60]
x4 = copy.copy(x[:5])
print(id(x),id(x4))# x和x4不是同一个id
2、更新列表
对列表的数据项进行修改或更新,也可以使用 append() 方法来添加列表项
# 更新列表(修改列表)
x = [10,20,30,40,50]
print(x[0])
x[0] = 100# 通过下标修改列表中的数据
print(x)
print(x[0])
# 添加元素到列表的末尾,一次只能加一个元素。
x.append(60)
x.append(70)
print(x)
3、删除列表元素
可以使用 del 语句来删除列表的的元素
# 删除列表的元素
x = [10,20,30,40,50]
x[2] = None
# del x[2]
# del x # 删除变量x,释放空间
# x = []# 更新变量
print(x)
print(len(x))
print(x[2])
4、列表操作符
Python 表达式 | 结果 | 描述 |
---|---|---|
len([1, 2, 3]) | 3 | 长度 |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 组合 |
['Hi!'] * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 重复 |
3 in [1, 2, 3] | True | 元素是否存在于列表中 |
for x in [1, 2, 3]: print(x) | 1 2 3 | 迭代 |
# 列表运算
x = [10,20,30,40]
# x2 = x+20 # 错误,不能相加
x2 = x + [10,20,30]
print(x2)
x3 = x*2
print(x3)# *n表示列表重复n次,n为整数,n为0是得到空列表
#
x = [[10,20],[20,30],40]
x2 = [10,20]
print(x[2])
print(x[0],x2)
print(id(x[0]),id(x2))
re = x2 in x# x2中保存的数据在x中有没有“一样”(数据一样就行不一定非得是同一个元素)的数据
print(re)
# 笔试题
x = [10,20,30,40]
# r = range(len(x))# 数列,也是数据容器
for i in range(len(x)):
# print(i,x[i])
#x[i] = i
temp = x[i]
del x[i]
x.append(temp)
print(x)
5、嵌套列表
使用嵌套列表即在列表里创建其它列表
# 嵌套列表
x = [1,2,3,4]
x2 = ["a","b","c"]
x3 = [x,x2]
print(x3)
print(x3[0][3])
6、Python列表常用API
操作列表的函数
序号 | 函数 |
---|---|
1 | len(list)列表元素个数 |
2 | max(list)返回列表元素最大值 |
3 | min(list)返回列表元素最小值 |
4 | list(seq)将可迭代数据转换为列表,常见官方可迭代数据:列表,序列(range),字符串,元组 |
# 列表常用api
x = [10,20,30,40]
print(len(x))
print(max(x))
print(min(x))
re = range(20)
re = 'hello'
re = (10,20,30,40)
x= list(re)
print(x)
列表的方法
序号 | 方法 |
---|---|
1 | list.append(obj)在列表末尾添加新的对象 |
2 | list.count(obj)统计某个元素在列表中出现的次数 |
3 | list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj)从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj)将对象插入列表 |
6 | list.pop(index=-1)移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj)移除列表中某个值的第一个匹配项 |
8 | list.reverse()反向列表中元素 |
9 | list.sort( key=None, reverse=False)对原列表进行排序: x.sort(key=lambda a:abs(a-3), reverse=False) |
10 | list.clear()清空列表 |
11 | list.copy()复制列表 |
x = [[10,20],10,20,[10,20]]
n = x.count(10)# 查看x列表中的元素有几个是10,不看元素内部。
print(n)
print(x.count([10,20]))
x = [10,20,30,40]
x2 = [10,1,2,3,4]
re = x.extend(x2)# 会直接修改x列表,.extend()括号中只能填可迭代数据
print(x)
x = [10,20,30]
re = x.pop(1)# 移除指定下标对应的元素,返回这个元素,不填时默认移除最后一个元素
# 移除指定下标不能越界
print(re)
print(x)
x = [10,20,10,30,None,10]
re = x.remove(None)# 不返回数据,不能越界,不然会报错
print(re,x)
x = [10,20,30]
x.clear()# 不改变id
print(x)
x = []# 重新开辟空间
print(x)
x = [10,20,30]
x2 = x.copy()
print("x:",x)
print("x2:",x)
print(x is x2)
print(id(x),id(x2))
x2[0] = 100
print(x,x2)
x.reverse()
print(x)
x = [1,8,6,-9,2,7,3,4]
x.sort(key=lambda a:a**2)
print(x)
二.Python元组(tuple)
Python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号 ( ),列表使用方括号 [ ]。
1、创建元组
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
1.1 存放相同类型的数据
tup1 = (1, 2, 3, 4, 5 )
1.2 存放不同类型的数据
tup2 = ( 'hqyj', 2004)
1.3 不需要括号也可以
tup3 = "a", "b", "c", "d"
1.4 只包含一个元素
元组中只包含一个元素时,需要在元素后面添加逗号 ,否则括号会被当作运算符使用:
x = (10,"hello",False,None,[10,20])
print(x)
x = 10,20,50,"hello",True
print(x)
x = (10)# 是括号运算符,后面加逗号才是元组
print(x)
x = (10,)# 表示只有一个元素的元组
print(x)
x = 20,
print(x)
a = 55
x = a,
print(x)
2、访问元组
元组与字符串类似,下标索引从 0 开始,可以进行截取,组合等。
# 元组也是一种数据容器,但是只能取,不能增删改
x = 10,20,30,[10,20]
print(id(x[3]))
print(x)
print(x[2])
print(x[-1])
print(x[1:])
x[3][0] = 30# 可以改列表内部元素但是不能改列表这个元素
print(id(x[3]))
print(x)
a,b,c,d = x# 相当于a = x[0],b = x[1],c = x[2],d = x[3]
print(a,b,c)# 即多变量赋值
3、修改元组
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
# 创建一个新的元组
tup3 = tup1 + tup2
print (tup3)
# 以下修改元组元素操作是非法的。
# tup1[0] = 100
标签:10,20,9.29,元素,列表,学习,x2,print,日志
From: https://blog.csdn.net/m0_74998557/article/details/142629089