0
点赞
收藏
分享

微信扫一扫

pytho----列表和元组

王小沫 2022-03-12 阅读 25
python

pytho----列表


创建列表

ls = [1,'a']
print(type(ls)) # <class 'list'>
ls = list()
print(type(ls)) # <class 'list'>

列表运算

相加

ls1 = ['a','b']
ls2 = [1,2]
lst = ls1 + ls2
print(lst)      # ['a', 'b', 1, 2]

print([1]+["a"]+['哈哈'])     # [1, 'a', '哈哈']

相乘

ls = ['a','b']
lst = ls * 3
print(lst)        # ['a', 'b', 'a', 'b', 'a', 'b']

访问列表

列表访问,也就是操作索引的过程,并且返回索引位置上的元素。

正向索引012345
列表11“ok”99“aa”22“哈哈”
反向索引-6-5-4-3-2-1
# 一维列表的访问
ls = ["python","java","go","R"]
print(ls[2])        # go
print(ls[-3])       # java

# 二维列表的访问
ls = [
    [1,2,3],
    [4,5,6],
    [7,8,9]
]
# 第0行第2列
print(ls[0][2])     # 3
# 第2行第2列
print(ls[2][2])     # 9

列表切片

ls = [0,1,2,3,4,5,6,7,8,9]

print(ls[2:])       # [2, 3, 4, 5, 6, 7, 8, 9]
print(ls[:6])       # [0, 1, 2, 3, 4, 5]
print(ls[2:8])      # [2, 3, 4, 5, 6, 7]
print(ls[0:9:2])    # [0, 2, 4, 6, 8]
print(ls[: :])      # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

修改元素

通过重新赋值修改某个元素的值

# 通过访问模式修改
ls = [0,1,2,3,4,5,6,7,8,9]
ls[2] = 'python'
print(ls)       # [0, 1, 'python', 3, 4, 5, 6, 7, 8, 9]
ls[-1] = "java"
print(ls)       # [0, 1, 'python', 3, 4, 5, 6, 7, 8, 'java']

# 通过切片模式修改
ls = [0,1,2,3,4,5,6,7,8,9]
ls[2:6] = 'a','b','c','d'
print(ls)       # [0, 1, 'a', 'b', 'c', 'd', 6, 7, 8, 9]
ls[2:6] = '切片修改'
print(ls)       # [0, 1, '切', '片', '修', '改', 6, 7, 8, 9]

del命令

可以从列表中删除元素,也可以删除整个列表。

ls = ['小学','中学','高中','大学']
del ls[0]
print(ls)   # ['中学', '高中', '大学']
del ls[-1]
print(ls)   # ['中学', '高中']
del ls  # 删除整个列表,列表不存在

列表方法

(1)、append()

ls = [0,1,2,4,5]
a = ls.append(666)
print(a)    # None
print(ls)   # [0, 1, 2, 4, 5, 666]

(2)、insert()

ls = [1,2,3,4,5]
a = ls.insert(3,888)
print(a)    # None
print(ls)   # [1, 2, 3, 888, 4, 5]

(3)、extend()


(4)、pop()

ls = ['小米','华为']
a = ls.extend(['真我','iqoo'])
print(a)    # None
print(ls)   # ['小米', '华为', '真我', 'iqoo']

(5)、remove()

ls = ['小米', '华为', '真我', 'iqoo']
a = ls.remove('真我')
print(a)    # None
print(ls)   #  ['小米', '华为', 'iqoo']

(6)、clear()

ls = ['小米', '华为', '真我', 'iqoo']
a = ls.clear()
print(a)    # None
print(ls)   # []

(7)、index()

ls = ['00','11','22','33','44','55','66','77','88','99']
a = ls.index('55')
print(a)     # 5
b = ls.index('55',7,9) # 在索引7-8范围查找,[7,9)
print(b) # 报错:ValueError: 5 is not in list

(8)、count()

ls = [11,22,33,11,44,11]
a = ls.count(11)
print(a)    # 3

(9)、sort()

ls = [9,7,8,1,4,5,2,3,6]
a = ls.sort()
print(a)    # None
print(ls)   # [1, 2, 3, 4, 5, 6, 7, 8, 9]
b = ls.sort(reverse=True)
print(ls)   # [9, 8, 7, 6, 5, 4, 3, 2, 1]

(10)、reverse()

ls = [9, 8, 7, 6, 5, 4, 3, 2, 1]
a = ls.reverse()
print(a)    # None
print(ls)   # [1, 2, 3, 4, 5, 6, 7, 8, 9]
ls.reverse()
print(ls)   # [9, 8, 7, 6, 5, 4, 3, 2, 1]

浅拷贝和深拷贝

赋值

指向同一块内存地址

ls = [1,2,3,4,5]
lst = ls
ls.append(666)
lst.append(999)
# lst 的值随 ls 的值的改变而改变,反之也成立
print(lst)  # [1, 2, 3, 4, 5, 666]
print(id(ls))   # 2445244758720
print(id(lst))  # 2445244758720

浅拷贝

指向不同的地址,重新开辟一块内存地址

# 方法一
ls = [1,2,3,4,5]
lst = ls.copy()
ls.append(666)
# lst 的值不随 ls 的值的改变而改变,反之也成立
print(lst)   # [1, 2, 3, 4, 5]
print(id(ls))       # 2682288929472
print(id(lst))      # 2682715094464

# 方法二
import copy
ls = [1,2,3,4,5]
lst = copy.copy(ls)
print(lst)      # [1, 2, 3, 4, 5]

深拷贝


ls = [1,2,[4,5]]
lst = ls.copy()
ls.append(888)
ls[2].append(666)
# 浅拷贝时二维及高维序列时,lst 的高维元素值会随 ls 改变而改变,反向也成立
print(lst)      # [1, 2, [4, 5, 666]]
# 整体内存地址不同
print(id(ls))      # 2679799940224
print(id(lst))     # 2679800217664
# 高维元素内存地址相同
print(id(ls[2]))   # 2679382080192
print(id(lst[2]))  # 2679382080192

# 深拷贝
import copy
ls = [1,2,[4,5]]
lst = copy.deepcopy(ls)
ls[2].append(666)
# 深拷贝时高维元素也不会因一方的改变而改变
print(lst)      # [1, 2, [4, 5]]
print(id(ls[2]))   # 2440958195008
print(id(lst[2]))  # 2440958194944

python----元组


元组的元素是不能更改的,也就是创建一个元组后就不能更改了。元组里面能用的方法只有 index 和 count 和列表用法一样。
由于元组的很多用法跟列表相似,这里就简单举几个例子

# 创建元组
tu = (1,2,3)
tup = tuple()
print(type(tu),type(tup))   # <class 'tuple'> <class 'tuple'>

# 访问元组
tp = (0,1,2,3,4,5)
t = tp[2]
print(t)    # 2

# 切片
tt = tp[2:5]
print(tt)   # (2, 3, 4)

元组列表互换

# 元组转换成列表
tp = (1,2,3,4,5)
ls = list(tp)
print(ls)   # [1, 2, 3, 4, 5]

# 列表转换成元组
lst = [1,2,3,4,5]
tup = tuple(lst)
print(tup)  # (1, 2, 3, 4, 5)
举报

相关推荐

0 条评论