列表和元组
Posted xiaoqianbook
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表和元组相关的知识,希望对你有一定的参考价值。
一. 列表
列表的介绍
列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. 比如JS中的数 组, java中的数组等. 它是以[ ]括起来, 每个元素用‘ , ‘隔开而且可以存放各种数据类型:
定义: 能装对象的对象
在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求
列表存在索引和切片. 和字符串是一样的.
lst = ["麻花藤", "王剑林", "马芸", "周鸿医", "向华强"] print(lst[0]) # 获取第一个元素 print(lst[1]) print(lst[2]) lst[3] = "流动强" # 注意. 列表是可以发生改变的. 这里和字符串不?样 print(lst) # [‘麻花藤‘, ‘王剑林‘, ‘马芸‘, ‘流动强‘, ‘向华强‘] s0 = "向华强" s0[1] = "美" # TypeError: ‘str‘ object does not support item assignment 不允许改变 print(s0)
列表的切片
lst = ["麻花藤", "王剑林", "马芸", "周鸿医", "向华强"] print(lst[0:3]) #[‘麻花藤‘, ‘王剑林‘, ‘马芸‘] print(lst[:3]) #[‘麻花藤‘, ‘王剑林‘, ‘马芸‘]
添加
1. append() 追加
2. insert(位置, 元素) 插入指定元素到指定位置
3 .extend() #迭代添加
lis = ["小白","小黑"] lis.append("小钱") #添加append() 追加,在后面添加 print(lis) lis.insert(1,"小黄") #insert(位置,元素),效率相对较低 print(lis) lis.extend("小绿")#迭代添加,把传递进取的参数进行迭代放在最后 print(lis) lis.extend(["小狗","12"]) print(lis)
删除
1. pop(index) 根据索引删除
2. remove(元素) 根据元素删除
3. clear() #清空列表
lis = ["小白","小黑"] lis.pop() #默认从后往前删 print(lis) lis.remove("小钱")#移除 print(lis) del lis[:2]#切片删除 print(lis) del lis[0]#索引删除 print(lis)
修改:
索引修改
lst[索引] = 元素
lis = ["苏秦","武大","武二","元宝","佩奇"] lis[2] = "wusir" print(lis) #[‘苏秦‘, ‘武大‘, ‘wusir‘, ‘元宝‘, ‘佩奇‘] lis[1:2] = ["马化腾",123] print(lis) #[‘苏秦‘, ‘马化腾‘, 123, ‘wusir‘, ‘元宝‘, ‘佩奇‘] lis[1:5:2] = ["小白","小黑"] print(lis) #[‘苏秦‘, ‘小白‘, 123, ‘小黑‘, ‘元宝‘, ‘佩奇‘] lis = ["alex","wusir","胡椒汤"] lis[1] = lis[1].upper() print(lis) #[‘alex‘, ‘WUSIR‘, ‘胡椒汤‘] lis[1] = lis[1].replace("wusir","WUSIR") print(lis)#[‘alex‘, ‘WUSIR‘, ‘胡椒汤‘]
查询
for循环.
list = ["jay","wlh","lzw","wf"] for i in list:#jay wlh lzw wf print(i) for i in 123: #不能迭代TypeError: ‘int‘ object is not iterable print(i) lis = ["太白","太白","太黑","太白","女神"] print(lis.count("太白")) #3
其他操作
1. count() 计数
2. sort() 排序 reverse = True
3. reverse() 翻转
4. len() 求长度
lis = ["太白","太白","太黑","太白","女神"] print(lis.count("太白")) #3 lst = [1,8,12,1,1,2,33,5,4] lst.sort() #排序 升序 print(lst)#[1, 1, 1, 2, 4, 5, 8, 12, 33] lst.sort(reverse = True) # reverse 反向,降序 print(lst)#[33, 12, 8, 5, 4, 2, 1, 1, 1] lst = ["张三","李四","小吴","大白"] lst.reverse() #把列表翻转 print(lst)#[‘大白‘, ‘小吴‘, ‘李四‘, ‘张三‘] print(len(lst))#查看元素的个数
列表嵌套
# -*- coding:utf-8 -*- lst = [["张艺谋", "冯小刚", "陈凯歌"], ["李安", "王家卫", "王晶"], ["周杰伦",["abc", "alex_wusir", ["胡辣汤", "c"]], "风扇哥"]] print(lst[1][1][1]) # lst[1][2] = "柯南" print(lst)#[[‘张艺谋‘, ‘冯小刚‘, ‘陈凯歌‘], [‘李安‘, ‘王家卫‘, ‘柯南‘], [‘周杰伦‘, [‘abc‘, ‘alex_wusir‘, [‘胡辣汤‘, ‘c‘]], ‘风扇哥‘]] lst[2][1][1]=lst[2][1][1].replace("_","$") print(lst)#[[‘张艺谋‘, ‘冯小刚‘, ‘陈凯歌‘], [‘李安‘, ‘王家卫‘, ‘柯南‘], [‘周杰伦‘, [‘abc‘, ‘alex$wusir‘, [‘胡辣汤‘, ‘c‘]], ‘风扇哥‘]]
元组和元组嵌套
元组
俗称不可变的列表.又被成为只读列表, 元组也是python的基本数据类型之一, 用小括号括起来, 里面可以放任何数据类型的数据, 查询可以. 循环也可以. 切片也可以. 但就是不能改.
什么是元组
能装对象的对象. 不可变. 一旦确认好. 不可更改
只读列表
可以迭代
tu = ("DNF","LOL","王者荣耀","QQ飞车","炫舞",{},tuple(),[]) print(tu) #(‘DNF‘, ‘LOL‘, ‘王者荣耀‘, ‘QQ飞车‘, ‘炫舞‘, {}, (), []) # tu[1] = "hehe"#报错TypeError: ‘tuple‘ object does not support item assignment #切片 print(tu[3:5])#(‘QQ飞车‘, ‘炫舞‘) print(tu[3:7:2])#(‘QQ飞车‘, {}) tu = tuple() #固定写法 print(tu)#() #元组中如果有一个元素 tu = (1) #不是元组 print(tu)#1 tu = (1,) #是元组 print(tu)#(1,) tu = ("包子","火锅","水煮鱼") #元组可迭代 for item in tu: print(item)#包子 火锅 水煮鱼
关于不可变,
tu= (1,"哈哈","喝鸡汤",["忍者","神龟"]) # tu[3] = ["我是新列表"] #改变了指向,报错 tu[3].append("孙悟空") #元组没变 ,没有改变元组的指向 print(tu)#(1, ‘哈哈‘, ‘喝鸡汤‘, [‘忍者‘, ‘神龟‘, ‘孙悟空‘])
注意: 这里元组的不可变的意思是子元素不可变. 而子元素内部的子元素是可以变, 这取决于子元素是否是可变对象. 元组中如果只有一个元素. 一定要添加一个逗号, 否则就不是元组
和列表一样.都可以互相嵌套.
元组的不可变: 指向不变
range(重点, 难点)
range(n) [0, n)
range(m,n) [m, n)
range(m,n,p) [m,n) 每隔p取一个
# 重点
for i in range(len(lst)):
i 索引
lst[i] 元素
lst = ["周杰伦","王宝强","大风车","小白鼠"] for item in lst: print(item)#周杰伦 王宝强 大风车 小白鼠 for i in range(len(lst)): print(i,lst[i]) #0 周杰伦 1 王宝强 2 大风车 3 小白鼠
以上是关于列表和元组的主要内容,如果未能解决你的问题,请参考以下文章