06.Python开发基础(数据类型之列表)


一、列表数据类型的特性

01:列表是可修改的数据类型
02:列表允许有重复的元素
03:列表中的元素是有序的
04:列表中的元素是有相应的下标
05:列表中的元素可进行切片操作

二、列表的几种定义方式

# 定义方式一
>>> name1 = ["chenliang","lili","lanlan","binbin"]
>>> name1
['chenliang', 'lili', 'lanlan', 'binbin']

# 定义方式二
>>> name2 = list(["chenliang","lili","lanlan","binbin"])
>>> name2
['chenliang', 'lili', 'lanlan', 'binbin']

三、列表中元素对应的下标

names = ["chenliang","lanlan","lili","xiaxia"] 
>>> name
['chenliang', 'lili', 'lanlan', 'binbin']
>>>
>>> names[0]
'chenliang'
>>> names[1]
'lanlan'
>>> names[2]
'lili'
>>> names[3]
'xiaxia'
>>>
>>> names[-1]
'xiaxia'
>>> names[-2]
'lili'
>>> names[-3]
'lanlan'
>>> names[-4]
'chenliang'

四、列表中元素的增删改查

PS:这些操作会真的的更改列表中的相关元素的哈

 ## 相关操作的总结如下

列表元素插入操作:列表名.insert(要插入的位置(下标),"插入的元素")  # 没有相应的下标,则会报错
列表元素追加操作:列表名.append("插入的元素")                     # 追加后,不会返回任何值
列表元素修改操作:列表名[被修改元素的下标] = "修改成啥样"         # 没有相应的下标,则会报错
列表元素存在判断:"元素" in 列表名                                # 返回True或False
列表元素下标查看:列表名.index("元素")  # 若元素存在,则返回第一个元素的下标,若元素不存在则报错
列表元素删除操作:
第一种方法:del(列表名[元素下标])       # 若没有相应的下标,则会报错,删除时没有返回值
第二种方法:列表名.pop(元素下标)        # 若没有相应的下标,则会报错,删除时返回相应元素
第三种方法:列表名.pop()                # 删除列表中的最后一个元素,若是空列表则报错
第四种方法:列表名.remove("元素")       # 移除列表中的相应元素,若元素不存在时会报错,删除时没有返回值
第五种方法:列表名.clear()              # 清空列表中的所有元素,删除时没有返回值

##相关操作的示例如下

#################### 列表元素的增加(插入任意位置)############################
>>> name                     # 查看name列表中有哪些元素
['chenliang', 'lili', 'lanlan', 'binbin']
>>>
>>> name.insert(1,"陈亮")    # 将"陈亮"插入到name列表中的下标为1的位置
>>> name
['chenliang', '陈亮', 'lili', 'lanlan', 'binbin']


#################### 列表元素的增加(追加到最后)  ##############################
>>> name                     # 查看name列表中有哪些元素
['chenliang', '陈亮', 'lili', 'lanlan', 'binbin']
>>>
>>> name.append("亮亮"))     # 追加"亮亮"元素到name列表的最后
>>> name
['chenliang', '陈亮', 'lili', 'lanlan', 'binbin', '亮亮']


#################### 列表元素的修改  ##########################################
>>> name.count("lanlan")     # 统计"lanlan"元素在name列表中有多少个
1
>>> name.index("lanlan")     # 查看"lanlan"元素在name列表中的对应下标
3
>>> name[3] = "lili"         # 将下标为3的lanlan元素修改成lili
>>> name                     # 查看name列表中有哪些元素
['chenliang', '陈亮', 'lili', 'lili', 'binbin', '亮亮']


#################### 判断元素是否在列表中 #####################################
>>> name                     # 查看name列表中有哪些元素
['chenliang', '陈亮', 'lili', 'lili', 'binbin', '亮亮']
>>>
>>> "lili" in name           # 判断lili元素是否在name列表中存在
True
>>>
>>> "binbin" in name         # 判断binbin元素是否在name列表中存在
True


#################### 查看元素在列表中对应的下标  ############################## 
>>> name                     # 查看name列表中有哪些元素
['chenliang', '陈亮', 'lili', 'lili', 'binbin', '亮亮']
>>>
>>> name.count("lili")       # 统计lili元素在name列表中的个数
2
>>> name.index("lili")       # 查看name列表中第一个lili元素的对应下标
2
>>> name[2]
'lili'

PS:若列表中存在多个相同的元素,那么index()只能找出第一个(最左边)的元素对应的下标


#################### 列表元素的删除  ############################################
>>> name                     # 查看name列表中有哪些元素
['chenliang', '陈亮', 'lili', 'lanlan', 'binbin', '亮亮']
>>>
>>> del(name[name.index("lili")])  # 删除name列表中第一个lili元素
>>> name
['chenliang', '陈亮', 'lili', 'binbin', '亮亮']
>>>
>>> name.pop()                     # 删除name列表中的第后一个元素
'亮亮'
>>> name
['chenliang', '陈亮', 'lili', 'binbin']
>>>
>>> name.pop(name.index("lili"))   # 删除name列表中的lili元素
'lili'
>>> name
['chenliang', '陈亮', 'binbin']
>>>
>>> name.remove("binbin")          # 移除name列表中的binbin元素
>>> name
['chenliang', '陈亮']
>>>
>>> name.clear()                   # 清除name列表中的所有元素
>>> name
[]

五、列表的嵌套、合并、反转

PS:这些操作都是会更改列表的具体元素的哈

## 相关操作的总结如下所示

列表嵌套:列表名.insert(下标,"插入的新列表")
列表合并:列表名1.extend(列表名2)    # 是将列表名2中的元素合并到列表名1中
列表反转:列表名.reverse()          # 将列表中的元素进行反转(前队变后队)

## 相关操作的示例如下所示:

## 列表的嵌套
>>> name = ["cheliang","binbin"]
>>>
>>> name.insert(1,["chen","liang"])
>>> name
['chenliang', ['chen', 'liang'], 'binbin']


## 列表的合并
>>> name = ["chenliang","llili"]
>>> name
['chenliang', 'llili']
>>>
>>> name1 = ["lanlan","yinyin"]
>>> name1
['lanlan', 'yinyin']
>>>
>>> name.extend(name1)
>>> name
['chenliang', 'llili', 'lanlan', 'yinyin']
>>> name1
['lanlan', 'yinyin']


## 列表的反转
>>> name
['chenliang', 'llili', 'lanlan', 'yinyin']
>>>
>>> name.reverse()
>>> name
['yinyin', 'lanlan', 'llili', 'chenliang']

六、列表中元素的切片操作

PS:列表的切片没有真的改变列表中相关元素哈,只是通过切片后在屏幕上显示或者通过切片后赋值给其它变量

##################### 从列表最左边的元素开始 ###########################################
##################### 要么取开头、要么取中间、要么从某个字符取到最后)##################
## 取列表中的前N个元素(取列表中的的第1个元素到第5个元素)
>>> name = ["chenliang","lili","lanlan","binbin","yinyin","xinxin","zhuer"]
>>> name
['chenliang', 'lili', 'lanlan', 'binbin', 'yinyin', 'xinxin', 'zhuer']
>>>
>>> name[:5]
['chenliang', 'lili', 'lanlan', 'binbin', 'yinyin']
>>>
>>> name[0:5]
['chenliang', 'lili', 'lanlan', 'binbin', 'yinyin']
>>>
>>> name[0:5:1]
['chenliang', 'lili', 'lanlan', 'binbin', 'yinyin']


## 取列表中间的N个元素(取列表的第2个元素到第5个元素)
>>> name
['chenliang', 'lili', 'lanlan', 'binbin', 'yinyin', 'xinxin', 'zhuer']
>>>
>>> name[1:5]
['lili', 'lanlan', 'binbin', 'yinyin']
>>>
>>> name[1:5:]
['lili', 'lanlan', 'binbin', 'yinyin']
>>>
>>> name[1:5:1]
['lili', 'lanlan', 'binbin', 'yinyin']


## 从列表中间某个元素取到最后(从列表中的第4个元素取到最后)
>>> name
['chenliang', 'lili', 'lanlan', 'binbin', 'yinyin', 'xinxin', 'zhuer']
>>>
>>> name[3:]
['binbin', 'yinyin', 'xinxin', 'zhuer']
>>>
>>> name[3::]
['binbin', 'yinyin', 'xinxin', 'zhuer']
>>>
>>> name[3::1]
['binbin', 'yinyin', 'xinxin', 'zhuer']

 
##################### 从列表的左边开始(排除右边的元素)##############################
## 取列表中除了最后N个元素外的所有元素(排除列表右边3个元素)
>>> name
['chenliang', 'lili', 'lanlan', 'binbin', 'yinyin', 'xinxin', 'zhuer']
>>>
>>> name[:-3]
['chenliang', 'lili', 'lanlan', 'binbin']
>>>
>>> name[:-3:]
['chenliang', 'lili', 'lanlan', 'binbin']
>>>
>>> name[:-3:1]
['chenliang', 'lili', 'lanlan', 'binbin']

 
##################### 从某个元素跨步N个元素开始取#####################################
## 从第1个元素开始,每跨2个元素开始取
>>> name
['chenliang', 'lili', 'lanlan', 'binbin', 'yinyin', 'xinxin', 'zhuer']
>>>
>>> name[::2]
['chenliang', 'lanlan', 'yinyin', 'zhuer']
>>>
>>> name[0::2]
['chenliang', 'lanlan', 'yinyin', 'zhuer']

## 从第2个字符开始,每跨2个字符开始取
>>> name
['chenliang', 'lili', 'lanlan', 'binbin', 'yinyin', 'xinxin', 'zhuer']
>>>
>>> name[1::2]
['lili', 'binbin', 'xinxin']

 
##################### 通过切片反转列表 ###############################################
## 通过切片反转列表(前队变后队)
>>> name
['chenliang', 'lili', 'lanlan', 'binbin', 'yinyin', 'xinxin', 'zhuer']
>>>
>>> name[-1::-1]
['zhuer', 'xinxin', 'yinyin', 'binbin', 'lanlan', 'lili', 'chenliang']

## 通过切片反转列表(前队变后队,每隔2个元素)
>>> name
['chenliang', 'lili', 'lanlan', 'binbin', 'yinyin', 'xinxin', 'zhuer']
>>>
>>> name[-1::-2]
['zhuer', 'yinyin', 'lanlan', 'chenliang']