pytho----列表和元组

pytho----列表


创建列表

方法一:
    ls = [‘a’,‘b’]
方法二
    ls = list()

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', '哈哈']

相乘

符号:*
作用:用数字n乘以一个列表,生成一个新的列表,新列表中原列表中的元素重复n次。

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[开始索引 : 结束索引 : 间隔]
切片的5种情况:
    (1)、ls[开始索引 : ] # 从开始索引截取到列表的最后
    (2)、ls[ : 结束索引] # 从开头截取到结束索引-1的元素
    (3)、ls[ 开始索引: 结束索引] # 从开始索引截取到结束索引-1的元素
    (4)、ls[开始索引 : 结束索引 : 间隔] # 从开始索引截取到结束索引-1的元素,并且按照指定的间隔截取元素
    (5)、ls[ : ] 或 str[ : :] # 截取列表的所有元素

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()

功能:向列表的末尾添加新的元素
格式:列表.append(值)
返回值:None
注意:新添加的值在列表的末尾,该函数直接操作原有列表

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

(2)、insert()

功能:在指定索引之前插入元素
格式:列表.insert(索引,值)
返回值:None
注意:直接改变原有列表

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

(3)、extend()

功能:迭代追加所有元素
格式:列表.extend(可迭代性数据)
返回值:None
注意:直接改变原有列表


(4)、pop()

功能:通过指定索引删除元素,若没有索引移除最后那个
格式:列表.pop(索引)
返回值:删除的元素
(注意:没有指定索引,默认移除最后一个元素 )

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

(5)、remove()

功能:通过给予的值来删除,如果多个相同元素,默认删除第一个
格式:列表.remove(值)
返回值:None
(注意:如果有索引的情况推荐使用pop,效率高于remove)

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

(6)、clear()

功能:清空列表
格式:列表.clear()
返回值:None
注意:直接改变原有列表,原列表为空

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

(7)、index()

功能:获取某个值在列表中的索引
格式:列表.index(值[,start][,end]) # [] 表达参数可选项
返回值:找到返回索引 (找不到报错)

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()

功能:计算某个元素出现的次数
格式:列表.count(值)
返回值:次数

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

(9)、sort()

功能:列表排序(默认小到大排序)
格式:列表.sort(reverse=False)
返回值:None
注意:直接更改原列表

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()

功能:列表反转操作
格式:列表.reverse()
返回值:None
注意:直接更改原列表

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

童话的python之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值