列表及元组

Posted heshun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表及元组相关的知识,希望对你有一定的参考价值。

一.列表的介绍:

列表是Python数据类型之一, 其他编程语言也有类似的数据类型.比如JS中的数组,java中的数组等等,他是以 [] 括起来,每个元素用  ‘,‘  隔开,而且可以存放各种数据类型

1 lst = [1,"lx","我是",[1,,"长时间啊"],("我叫元组",123,"lx"),"cde",{"我叫字典":48,"字典":"你好啊"},{"我叫集合","集合"}]

列表相比于字符串. 不仅可以存放不同的数据类型. ?且可以存放?量的数据. 32位 python可以存放: 536870912个元素, 64位可以存放: 1152921504606846975个元素.?且列 表是有序的(按照你保存的顺序),有索引, 可以切??便取值.

1.1 列表的索引与切片

列表和字符串?样也拥有索引:

例如:

 1 = [麻花腾,马云,王健林,许家印,雷军,刘强东]
 2 print(lst[0])  # 获取第一个元素
 3 print(lst[1])  # 获取第二个元素
 4 lst[0] = 马化腾
 5 print(lst)  # 注意. 列表是可以发?改变的. 这?和字符串不?样
 6 # s = "第一"
 7 # s[0] = "我"
 8 # print(s)  # 字符串不能改变原字符串
 9 # TypeError: ‘str‘ obje
10 
11 结果
12 麻花腾
13 马云
14 [马化腾, 马云, 王健林, 许家印, 雷军, 刘强东]

列表的切片:

 1 lst = [麻花腾,马云,王健林,许家印,雷军,刘强东]
 2 print(lst[0:3])
 3 print(lst[:3])
 4 print(lst[::2]) #列表也有步长
 5 print(lst[::-1])  #也能到着取
 6 print(lst[-1:-5:-1])  #到着带步长
 7 
 8 #结果
 9 [麻花腾, 马云, 王健林]
10 [麻花腾, 马云, 王健林]
11 [麻花腾, 王健林, 雷军]
12 [刘强东, 雷军, 许家印, 王健林, 马云, 麻花腾]
13 [刘强东, 雷军, 许家印, 王健林]

?. 列表的增删改查

1. 增, 注意, list和str是不?样的. lst可以发?改变. 所以直接就在原来的对象上进?了操 作

1 lst = [麻花腾,马云,王健林,许家印,雷军,刘强东]
2 lst.append("戴和顺")
3 lst.insert(1,"戴和顺")
4 lst.extend(["李嘉诚"]) #在原列表中末尾处追加一个序列,该序列中的所有元素都会被添加至愿列表的末尾,返回值为None
5 print(lst)

2. 删除

pop() , remove(),   clear(),   del

1 lst = [麻花腾,马云,王健林,许家印,雷军,刘强东]
2 lst1 = lst.pop(0) #pop() 利用索引删除元素,并返回该元素
3 print(lst1)
4 lst.remove("麻花腾")  #直接删除里面元素
5 lst.clear()  # 清空列表
6 del lst[1:3]  #  del 与切片类似
7 print(lst)

3. 修改

索引切片修改

1 lst = [麻花腾,马云,王健林,许家印,雷军,刘强东]
2 lst[0] = 马化腾
3 lst[1:4:2] = "mayun","wangjianlin"  #切?修改也OK. 如果步?不是1, 要注意. 元素的个数
4 lst[1:5] = ["ninainaidetui"]  #如果切?没有步?或者步?是1. 则不?关?个数
5 print(lst)

4. 查询, 列表是?个可迭代对象, 所以可以进?for循环

1 lst = [麻花腾,马云,王健林,许家印,雷军,刘强东]
2 for et in lst:
3     print(et)

5. 其他操作

1 lst = [1,2,5,9,6,7,2,5]
2 c = lst.count(2)  # 查询次数
3 print(c)
4 lst.sort()  #按从小到大的顺序排列
5 lst.sort(reverse=True) # 按从大到小的顺序排列
6 lst.reverse()  #翻转
7 print(lst)
8 print(len(lst))  #列表长度

三. 列表的嵌套

采?降维操作.?层?层的看就好.

lst = [麻花腾,马云,王健林,[xujiayin,王尼玛,[‘朴槿惠,奥巴马,特朗普],普金],雷军,刘强东]
#查询朴槿惠
print(lst[3][2][0])
#找到特朗普和奥巴马
print(lst[3][2][1:])
#将xujiayin首字母大写在放进去
lst[3][0] = lst[3][0].capitalize()
print(lst)
#把特朗普换成特步铺
lst[3][2][2] = "特步铺"
print(lst)
#将麻给成马
lst[0] = lst[0].replace("","")
print(lst)
#将特朗普给成傻逼
lst[3][2][2] = lst[3][2][2].replace("","傻逼")
print(lst)
lst[3][2].append("金正恩")
print(lst)

结果
朴槿惠
[奥巴马, 特朗普]
[麻花腾, 马云, 王健林, [Xujiayin, 王尼玛, [‘朴槿惠, 奥巴马, 特朗普], 普金], 雷军, 刘强东]
[麻花腾, 马云, 王健林, [Xujiayin, 王尼玛, [朴槿惠, 奥巴马, 特步铺], 普金], 雷军, 刘强东]
[马花腾, 马云, 王健林, [Xujiayin, 王尼玛, [朴槿惠, 奥巴马, 特步铺], 普金], 雷军, 刘强东]
[马花腾, 马云, 王健林, [Xujiayin, 王尼玛, [朴槿惠, 奥巴马, 特步傻逼], 普金], 雷军, 刘强东]
[马花腾, 马云, 王健林, [Xujiayin, 王尼玛, [朴槿惠, 奥巴马, 特步傻逼, 金正恩], 普金], 雷军, 刘强东]

四. 元组和元组嵌套

元组: 俗称不可变的列表.?被成为只读列表, 元组也是python的基本数据类型之?, ??括 号括起来, ??可以放任何数据类型的数据, 查询可以. 循环也可以. 切片也可以. 但就是不能 改.

tu = (麻花腾,马云,王健林,许家印,雷军,刘强东)
print(tu)
print(tu[0])
print(tu[4])
print(tu[2:5]) #切片之后还是元组

# for循环打印元组
for el in tu:
    print(el)
# 尝试修改元组
# tu[0] = "马化腾"
# print(tu)  #TypeError: ‘tuple‘ object does not support item assignment
# 报错  元组不能修改
# tu[1] = ["你"]  # 这样改也不行
# print(tu)
# tu[0].append("马化腾") #不能修改
# print(tu)

结果
(麻花腾, 马云, 王健林, 许家印, 雷军, 刘强东)
麻花腾
雷军
(王健林, 许家印, 雷军)
麻花腾
马云
王健林
许家印
雷军
刘强东

关于不可变, 注意: 这?元组的不可变的意思是?元素不可变. ??元素内部的?元素是可 以变, 这取决于?元素是否是可变对象.

元组中如果只有?个元素. ?定要添加?个逗号, 否则就不是元组   例如:   tu = (5,)       空元组   tu = tuper()

 元组也有count(), index(), len()等?法.

五. range

 1 lst = [麻花腾,马云,王健林,许家印,雷军,刘强东]
 2 # 获取列表索引,拿到索引之后,可以拿到元素
 3 for el in range(len(lst)):
 4     print(el)
 5     print(lst[el])
 6 
 7 结果
 8 0
 9 麻花腾
10 1
11 马云
12 2
13 王健林
14 3
15 许家印
16 4
17 雷军
18 5
19 刘强东

 

以上是关于列表及元组的主要内容,如果未能解决你的问题,请参考以下文章

3python自学之路-数据类型之序列与元组

Python基础部分

初识面试中的算法题

Annotation注解及元注解

python 元组有用的函数,方法和片段。

Cpp:将字符串片段解析为元组