Python-数据类型之列表
列表和元祖都属于序列类型,该序列内可以包含任意数据类型,且数据存储是有序的,索引从0到1
一:列表概述
1.1 如何定义一个列表
中括号,已逗号为分割符,可以放任意的数据类型,甚至是对象。
li = ['wangys','lala',123,[1,2,3],{'name':'wangys'}]
# 列表也可以嵌套
l2 = [['a','b'],[1,2],[]]
1.1.2 取单个元素,取出的是原数据类型
li = ['wangys','lala',123,[1,2,3],{'name':'wangys'}]
l1=li[0]
print(l1,type(l1))
l2=li[2]
print(l2,type(l2))
l3=li[3]
print(l3,type(l3))
1.1.2 取多个元素,取出的是列表类型
li = ['wangys','lala',123,[1,2,3],{'name':'wangys'}]
l4=li[0:2]
print(l4,type(l4))
二、 列表操作之-查
2.1 根据索引查找元素
索引是指元素在列表的位置顺序,从0开始,最有一个元素为长度-1
l = ['wangys',18,'male','IT']
print(l[0]) # 查看列表第一个元素即索引为0的元素
print(l[-1]) # 查看列表最后一个元素即索引为-1的元素
print(l[-2]) # 查看列表倒数第二个元素,即索引为-2的元素 结果如下:
wangys
IT
male
如果索引过界,则会报错,并且后面的代码不会执行
l = ['wangys',18,'male','IT']
print(l[4] # 查看列表第5个元素,即索引为4的元素,索引过界,导致错误 结果如下:
IndexError: list index out of range
2.2 列表分片查找元素
- 列表分片其实得到了一个子列表
- 顾首不顾尾
l = ['wangys',18,'male','IT']
print(l[1:3]) # 取列表第二个(索引为1)到第三个元素(索引为2),但顾首不顾尾,所以取最后索引+1
# [18, 'male']
# 如果结束索引要早于开始索引,会产生一个空列表
l = ['wangys',18,'male','IT']
print(l[3:1])
print(l[-2:1]) []
[]
# 省略开始索引,从第一个元素开始取值
l = ['wangys',18,'male','IT']
print(l[:2])
# ['wangys', 18]
# 省略结束索引,取到最后一个元素
l = ['wangys',18,'male','IT']
print(l[1:])
[18, 'male', 'IT']
# 开始索引和结束索引都省略,则复制整个列表
l = ['wangys',18,'male','IT']
print(l[:])
# 设置步长
默认步长为1,开始索引,结束索引,步长使用冒号分隔
l = [1,2,3,4,5,6,7,8,9,10]
print(l[1:9:2])
# [2, 4, 6, 8]
# 步长不能为0.如果为0,则报错
l = [1,2,3,4,5,6,7,8,9,10]
print(l[1:9:0])
# ValueError: slice step cannot be zero
# 如果步长为负数,那么开始索引要比结束索引要大
l = [1,2,3,4,5,6,7,8,9,10]
print(l[6:9:-2]) # 开始索引>结束索引,返回一个空列表
print(l[9:6:-2]) # 开始索引要大于结束索引 []
[10, 8]
2.3 检查某个元素是否是列表元素
使用in关键字,如果在列表种返回True,不在返回False
info = ['wangys',18,'male'] print('wangys' in info)
print('female' in info)
True
False
account = [
['wangys',''],
['wc',''],
['xc','hello']
] username = input('请输入用户名:')
password = input('请输入密码:') if [username,password] in account:
print('登录成功')
else:
print('登录失败') 请输入用户名:wangys
请输入密码:123456
登录成功
2.4 查看列表中某个元素出现的个数
num = [1,2,3,1,2,4]
CountOf1=num.count(1)
print(CountOf1)
2.5 查看元素索引
- 如果元素不存在报错
wangys_info = ["wangys",23,'male']
print(wangys_info.index('male'))
# 2
print(wangys_info.index('malea'))
# ValueError: 'malea' is not in list
三、列表操作之-增
3.1 append
- 在末尾相加
- 一次只增加一个元素,无论要append的是单个元素还是一个列表
li = ['wangys','gongzhu']
li.append('caomei')
li.append('1')
print(li)
# 需求: 员工列表,往员工列表里添加员工,可以持续添加,当输入q时退出
people = ['wangys','huisz']
flag = True
while flag:
add_people = input("请输入员工姓名:").strip()
if add_people.upper() == 'Q':
flag = False
else:
people.append(add_people)
print(people)
# append的列表,会将该列表作为一个元素append
num = [1,2,3,4,5]
num.append([6,7])
print(num) # [1, 2, 3, 4, 5, [6, 7]] # 可以使用extend方法
num = [1,2,3,4,5]
num.extend([6,7])
print(num)
# [1, 2, 3, 4, 5, 6, 7]
3.2 insert 按照索引进行插入
name = ['wangys','chaoyf']
name.insert(1,'huisz')
print(name) # ['wangys', 'huisz', 'chaoyf']
3. 3 extend
- 和相加类似,但相加产生了一个新的列表,二extend是修改原列表
- extend 将可迭代对象插入到列表的末尾,插入的是可迭代对象的每个元素
整型是不可迭代对象
name = ['wangys','chaoyf']
name.extend('lala')
print(name)
# ['wangys', 'chaoyf', 'l', 'a', 'l', 'a']
name.extend([1,2,3])
print(name) # ['wangys', 'chaoyf', 'l', 'a', 'l', 'a', 1, 2, 3]
四、列表操作之-删
4.1 pop
- pop 有返回值,该返回值是被删除的数据
- 按索引删除
- 不指定索引,把最后一个元素删除
- 如果指定的索引不存在则报错
name = ['wangys','lala']
delete_name = name.pop()
print(delete_name,name)
# lala ['wangys']
name = ["wangys","haha"]
name.pop(0)
print(name)
# ['haha'] name = ["wangys","hehe"]
print(name.pop())
# hehe
# 索引不存在,报错
num1 = [1,2,3,4]
num1.pop(6)
print(num1)
# IndexError: pop index out of range
4.2 按照元素去删除
- 默认删除匹配到的第一个元素
- 如果元素不存在,则报错
name = ['wangys','dede']
name.remove('dede')
print(name)
# ['wangys']
nums = [1,2,3,4,5,6,3]
nums.remove(3) 删除列表中第一次匹配到的3元素
print(nums) # [1, 2, 4, 5, 6, 3] # 可以看到确实是删除了,但后面的3没有删除
# 如果元素不存在,则报错
num1 = [1,2,3,4]
num1.remove('wangys')
print(num1)
# ValueError: list.remove(x): x not in list
4.3 清空列表
name = ["wangys","dsad"]
name.clear()
print(name)
# []
3.5.4 删除列表
name = ['wangys']
del name
print(name)
3.5.5 切片删除
name = ['wangys',"lala",'haha']
del name[1:]
print(name)
五、列表操作之-改
5.1 通过索引对列表进行修改
- 索引过界会报错
·
wangys_info = ["wangys",23,'male']
wangys_info[0] = 'wc' # 修改列表第一个元素
print(wangys_info)
# ['wc', 23, 'male'] # 如果索引越界,则会报错
wangys_info = ["wangys",23,'male']
wangys_info[5] = 'wc'
print(wangys_info) # IndexError: list assignment index out of range
5.2 分片字列表修改
- 新旧子列表元素个数可以不相等
# 新旧字列表元素个数不相等
wangys_info = ["wangys",23,'male']
wangys_info[:2] = ['wc','','IT']
print(wangys_info)
# ['wc', '18', 'IT', 'male'] # 新子列表是一个空列表
wangys_info = ["wangys",23,'male']
wangys_info[:2] = []
print(wangys_info)
# ['male']
六、列表其他操作
6.1 列表相加
- 列表相加生成了一个新的列表,效率比较低,不建议使用
- 可以使用extend方法将两个列表合并。
将两个列表合并
l1 = [1,2,3]
l2 = ['hello','world']
print(l1+l2)
# [1, 2, 3, 'hello', 'world']
6.2 列表乘法
l = ['wangys']
print(l*3)
['wangys', 'wangys', 'wangys']
6.3 len,max,min 在列表中的用法
- len 返回列表的长度,元素个数
- max,返回列表内元素的最大值
- min,返回列表内元素的最小值
- 使用max,min函数时列表中的元素必须具有可比较性,如果没有(比如,不同数据类型)则会报错
nums = [1,2,3]
print(max(nums))
print(min(nums))
3
1 info = ['wangys',18,'male']
print(len(info))
print(max(info))
print(min(info))
3
# TypeError: '>' not supported between instances of 'int' and 'str'
6.4 列表与其他数据类型的转换
6.4.1 str-list
使用list方法
name = 'wangys'
l = list(name)
print(l)
# ['w', 'a', 'n', 'g', 'y', 's']
6.5 排序
- sort 会对原列表直接修改,如果是sorted函数会生成一个新的列表
- 对列表进行排序时,列表中的元素必须是可比较的,如果不可比较,则报错
正向排序
num = [3,6,2,5,4]
num.sort()
print(num)
# [2, 3, 4, 5, 6]
反向排序
num = [3,6,2,5,4]
num.sort(reverse=True)
print(num)
# [6, 5, 4, 3, 2]
# 数据类型不一致,导致排序报错
info = ['wangys',18,'male']
info.sort()
print(info)
# TypeError: '<' not supported between instances of 'int' and 'str'
# sort和sorted
nums = [1,2,3,4,5]
nums.sort(reverse=True)
print(nums)
# [5, 4, 3, 2, 1] nums = [1,2,3,4,5]
new_nums=sorted(nums,reverse=True)
print(nums,new_nums)
# [1, 2, 3, 4, 5] [5, 4, 3, 2, 1]
6.6 列表反转
num = [3,6,2,5,4]
num.reverse()
print(num)
# [4, 5, 2, 6, 3]
6.7 列表复制
- 生成了一个新的列表
num1 = [1,2,3,4]
num2 = num1.copy()
print(id(num1),id(num2))
# id不一样,说明不是同一个列表,做了复制
# 2185254579656 2185254596744
6.8 列表嵌套
wangys_info = ['wangys',23,'male',['sing','play',22],25]
取出wangys里的a
wangys_info = ['wangys',23,'male',['sing','play',22],25]
print(wangys_info[0][1])
将列表的第一个元素大写并替换之前的元素
wangys_info = ['wangys',23,'male',['sing','play',22],25]
wangys_info[0] = wangys_info[0].capitalize()
print(wangys_info)
将王诚替换为王永胜
wangys_info = ['wangys',23,'王诚',['sing','play',22],25]
wangys_info[2] = wangys_info[2].replace('诚','永胜')
print(wangys_info)
wangys_info = ['wangys',23,'王诚',['sing','play',22],25]
wangys_info[3][1] = wangys_info[3][1].upper()
print(wangys_info)
七、列表推导式
# 将name字符串的每个字符转换为ACII码
# 普通方法
name = 'wangys'
l = []
for i in name:
l.append(ord(i))
print(l)
# 列表推导式方法
l =[ord(i) for i in name]
print(l)
八: For循环
- 列表是可迭代对象,可以for循环去除列表的数据
- for循环列表的过程中,如果做删除操作,不安全
8.2 正确删除列表中元素的方式
直接删除会有问题
# 直接删除,会出问题
lst = ['张国荣','张三','张大千','李世民']
for el in lst:
if el.startswith('张'):
lst.remove(el) print(lst)
# ['张三', '李世民']
正确做法,将要删除的元素刷选到新列表,循环新列表,删除旧列表
lst = ['张国荣','张三','张大千','李世民']
new_list = []
for el in lst:
if el.startswith('张'):
new_list.append(el) for el in new_list:
lst.remove(el)
print(lst)
其他方法
将列表二元组转换为字典
a = [('a','b')]
b = [('c','d')]
print(dict(a+b)) # {'a': 'b', 'c': 'd'}
Python-数据类型之列表的更多相关文章
- python数据类型:列表List和Set
python数据类型:列表List, Set集合 序列是Python中最基本的数据结构 序列中每个元素都分配一个数字,表示索引 列表的数据项不需要具有相同的类型 列表中的值可以重复并且有 ...
- Python数据类型list(列表)和tuple(元组)
list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...
- Python数据类型(列表)
文章内容参考了教程:http://www.runoob.com/python/python-basic-syntax.html#commentform Python 列表(List) 序列是Pytho ...
- Python之路-python数据类型(列表、字典、字符串、元祖)操作
一.列表: 列表的语法,以中括号开通和结尾,元素以逗号隔开.例如:name = [] 列表是以下标取值,第一个元素下标是0,第二个元素下标是1,最后一个元素下标是-1. 1.增加 #name = ...
- Python数据类型之列表
一.基本数据类型 整数:int 字符串:str(注:\t等于一个tab键) 布尔值: bool 列表:list (元素的集合) 列表用[] 元祖:tuple 元祖用() 字典:dict注:所有的数据类 ...
- python 数据类型二 (列表和元组)
一.列表 1.1 列表的介绍 列表是python的基本数据类型之一,其他编程语言也有类似的数据类型,比如JS中的数组,java中的数组等等,它是以[]括起来,每个元素用逗号隔开,而且可以存放各种数据类 ...
- python数据类型之列表(list)和其常用方法
列表是python常用数据类型之一,是可变的,可由n = []创建,也可由n = list()创建,第一种方法更常用. 常用方法总结: # 创建方法 n = [] 或者 n = list() # in ...
- Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之列表类型(list)
Python中序列是最基本的数据结构.序列中的每个元素都分配一个数字(他的位置或者索引),第一个索引是0,第二个索引是1,依次类推.Python的列表数据类型类似于C语言中的数组,但是不同之处在于列表 ...
- Python学习(五) Python数据类型:列表(重要)
列表: list是一组有序项目的数据结构. 列表是可变类型的数据,列表用[]进行表示,包含了多个以","分隔的项目. list=[] type(list) //<type ' ...
- Python基础-python数据类型之列表(四)
列表 格式 namesList = [ 字符串,数字,列表,元祖,集合] 列表中的元素可以是不 同类型的 列表的相关操作 列表中存放的数据是可以进行修改的,比如"增"." ...
随机推荐
- mysql int(19) float(7,2) decimal(7,2)对比
nt(19):指定数字的显示宽度为19,与实际存储数值的范围无关 float(7,2): 7是显示宽度指示器,指定显示的浮点数为7位数字(与float实际存储值的范围无关),2代表小数点后只有两位小 ...
- Tomcat服务器下载、安装、配置环境变量教程(超详细)
请先配置安装好Java的环境,若没有安装,请参照我以下的步骤进行安装! 请先配置安装好Java的环境,若没有安装,请参照我以下的步骤进行安装! 请先配置安装好Java的环境,若没有安装,请参照我以下上 ...
- golang介绍
一.golang介绍 golang是Google开发的一种 静态强类型.编译型,并发型,并具有垃圾回收功能的编程语言. 二.语言特性 1..自动垃圾回收 2.支持函数多返回值 3.并发强 三.gol ...
- linux 命令ls
命令格式 ls -la /etc -a 查看所有隐藏文件 以.开头的,就是隐藏文件.改名.开头,就可以改成隐藏文件 -l 长格式显示 ]# ls -al total 8 drwxr-xr-x ...
- Intel 11代全新核显出现了!好强 好乱
Intel最近为其10亿级用户的核芯显卡真是操醉了心,一方面进一步公布了第11代核显的架构细节,另一方面升级驱动程序带来了全新的控制中心. 而在对新驱动进行了一番挖掘之后,赫然发现Intel已经将第1 ...
- Linux内核参数
vm.overcommit_memory 0 - 表示内核将检查是否有足够的可用内存供应用进程使用:如果有足够的可用内存,内存申请允许:否则,内存申请失败,并把错误返回给应用进程. 1 - 表示内核允 ...
- java 11 新的Epsilon垃圾收集器
A NoOp Garbage Collector JDK上对这个特性的描述是: 开发一个处理内存分配但不实现任何实际内存回收机制的GC, 一旦可用堆内存用完, JVM就会退出. 如果有System.g ...
- bzoj5028小Z的加油店(线段树+差分)
题意:维护支持以下两种操作的序列:1 l r询问a[l...r]的gcd,2 l r x把a[l...r]全部+x 题解:一道经典题.根据gcd(a,b)=gcd(a-b,b)以及区间加可知,这题可以 ...
- GWAS分析基本流程及分析思路
数据预处理(DNA genotyping.Quality control.Imputation) QC的工作可以做PLINK上完成Imputation的工作用IMPUTE2完成 2. 表型数据统计分析 ...
- django系列7:修改404页面展示,优化模板,降低urlconf和模板之间的耦合,命名app将模板和app绑定
为了增加程序的友好和健壮性,修改view代码,处理以下如果出现404,页面的UI展示. 修改view代码 from django.http import Http404 from django.sho ...