列表和元祖都属于序列类型,该序列内可以包含任意数据类型,且数据存储是有序的,索引从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-数据类型之列表的更多相关文章

  1. python数据类型:列表List和Set

    python数据类型:列表List, Set集合 序列是Python中最基本的数据结构 序列中每个元素都分配一个数字,表示索引 列表的数据项不需要具有相同的类型        列表中的值可以重复并且有 ...

  2. Python数据类型list(列表)和tuple(元组)

    list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...

  3. Python数据类型(列表)

    文章内容参考了教程:http://www.runoob.com/python/python-basic-syntax.html#commentform Python 列表(List) 序列是Pytho ...

  4. Python之路-python数据类型(列表、字典、字符串、元祖)操作

    一.列表: 列表的语法,以中括号开通和结尾,元素以逗号隔开.例如:name = [] 列表是以下标取值,第一个元素下标是0,第二个元素下标是1,最后一个元素下标是-1.   1.增加 #name = ...

  5. Python数据类型之列表

    一.基本数据类型 整数:int 字符串:str(注:\t等于一个tab键) 布尔值: bool 列表:list (元素的集合) 列表用[] 元祖:tuple 元祖用() 字典:dict注:所有的数据类 ...

  6. python 数据类型二 (列表和元组)

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

  7. python数据类型之列表(list)和其常用方法

    列表是python常用数据类型之一,是可变的,可由n = []创建,也可由n = list()创建,第一种方法更常用. 常用方法总结: # 创建方法 n = [] 或者 n = list() # in ...

  8. Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之列表类型(list)

    Python中序列是最基本的数据结构.序列中的每个元素都分配一个数字(他的位置或者索引),第一个索引是0,第二个索引是1,依次类推.Python的列表数据类型类似于C语言中的数组,但是不同之处在于列表 ...

  9. Python学习(五) Python数据类型:列表(重要)

    列表: list是一组有序项目的数据结构. 列表是可变类型的数据,列表用[]进行表示,包含了多个以","分隔的项目. list=[] type(list) //<type ' ...

  10. Python基础-python数据类型之列表(四)

    列表 格式 namesList = [ 字符串,数字,列表,元祖,集合] 列表中的元素可以是不 同类型的 列表的相关操作 列表中存放的数据是可以进行修改的,比如"增"." ...

随机推荐

  1. mysql int(19) float(7,2) decimal(7,2)对比

    nt(19):指定数字的显示宽度为19,与实际存储数值的范围无关 float(7,2):  7是显示宽度指示器,指定显示的浮点数为7位数字(与float实际存储值的范围无关),2代表小数点后只有两位小 ...

  2. Tomcat服务器下载、安装、配置环境变量教程(超详细)

    请先配置安装好Java的环境,若没有安装,请参照我以下的步骤进行安装! 请先配置安装好Java的环境,若没有安装,请参照我以下的步骤进行安装! 请先配置安装好Java的环境,若没有安装,请参照我以下上 ...

  3. golang介绍

    一.golang介绍  golang是Google开发的一种 静态强类型.编译型,并发型,并具有垃圾回收功能的编程语言. 二.语言特性 1..自动垃圾回收 2.支持函数多返回值 3.并发强 三.gol ...

  4. linux 命令ls

    命令格式 ls -la /etc -a  查看所有隐藏文件 以.开头的,就是隐藏文件.改名.开头,就可以改成隐藏文件 -l  长格式显示 ]# ls -al total 8 drwxr-xr-x    ...

  5. Intel 11代全新核显出现了!好强 好乱

    Intel最近为其10亿级用户的核芯显卡真是操醉了心,一方面进一步公布了第11代核显的架构细节,另一方面升级驱动程序带来了全新的控制中心. 而在对新驱动进行了一番挖掘之后,赫然发现Intel已经将第1 ...

  6. Linux内核参数

    vm.overcommit_memory 0 - 表示内核将检查是否有足够的可用内存供应用进程使用:如果有足够的可用内存,内存申请允许:否则,内存申请失败,并把错误返回给应用进程. 1 - 表示内核允 ...

  7. java 11 新的Epsilon垃圾收集器

    A NoOp Garbage Collector JDK上对这个特性的描述是: 开发一个处理内存分配但不实现任何实际内存回收机制的GC, 一旦可用堆内存用完, JVM就会退出. 如果有System.g ...

  8. bzoj5028小Z的加油店(线段树+差分)

    题意:维护支持以下两种操作的序列:1 l r询问a[l...r]的gcd,2 l r x把a[l...r]全部+x 题解:一道经典题.根据gcd(a,b)=gcd(a-b,b)以及区间加可知,这题可以 ...

  9. GWAS分析基本流程及分析思路

    数据预处理(DNA genotyping.Quality control.Imputation) QC的工作可以做PLINK上完成Imputation的工作用IMPUTE2完成 2. 表型数据统计分析 ...

  10. django系列7:修改404页面展示,优化模板,降低urlconf和模板之间的耦合,命名app将模板和app绑定

    为了增加程序的友好和健壮性,修改view代码,处理以下如果出现404,页面的UI展示. 修改view代码 from django.http import Http404 from django.sho ...