
离线 TA的专栏
- 打卡等级:热心大叔
- 打卡总天数:203
- 打卡月天数:0
- 打卡总奖励:3059
- 最近打卡:2023-08-27 07:38:29
|
列表是什么
列表是元素的集合,存储在一个变量中。
列表中存储的元素类型没有限制,根据需要动态分配和回收内存
列表中的每个元素都会分配一个数字用来表示它的位置(索引),第一个索引是 0,第二个索引是 1,依此类推。
列表的数据项不需要具有相同的类型
列表可以存储重复数据
列表的CRUD
创建列表
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示: - list1 = ['physics', 'chemistry', 1997, 2000]
- list2 = [1, 2, 3, 4, 5 ]
- list3 = ["a", "b", "c", "d"]
复制代码与字符串的索引一样,列表索引从 0 开始。列表可以进行截取、组合等。
列表中元素的类型的多样性 - a_list=['lemon', 100, ['a', 'b', 'c', 'd'], True]#同一个list的类型可以是字符串,整型,布尔型(true和false),以及嵌套的lis
复制代码 访问列表中的值
使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符,如下所示: - list1 = ['physics', 'chemistry', 1997, 2000]
- list2 = [1, 2, 3, 4, 5, 6, 7]
- print("list1[0]: ", list1[0]) # list1[0]: physics
- # 嵌套列表
- list1 = ['physics', 'chemistry', 1997, 2000,[1,2,3,4,5]]
- print("list1[0]: ", list1[4][0]) # list1[0]: 1
复制代码- print(a[1:3]) #按下标0开始,不包括最右边的3
- print(a[1:]) #1以及之后的全部
- print(a[:3]) #3之前的但不包括3
- print(a[:]) #所有
- print(a[::2])#[start:end:step]start和end为空的时候,默认是全选,step为空时默认是1,这个表示的是从索引为0开始,以步长为2来选择元素
- print(a[1:3:2])#以索引为1开始,索引3结束,步长为2来选择元素
- print(a[::-1])#当step为-1时,将列表进行了逆序排序
- print(a[::-2])#将列表进行了逆序排序,步长为2来选择元素
复制代码 更新列表
修改列表中的元素需要使用索引表示将指定索引位置的元素进行重新赋值。 - list1 = ['physics', 'chemistry', 1997, 2000]
- list1[0]= 'maths'
- print("list1[0]: ", list1[0]) # list1[0]: maths
复制代码
删除元素
移除列表中的元素,可以通过 del 语句,通过索引号指定要删除的元素对象。 - list1 = ['physics', 'chemistry', 1997, 2000]
- del list1[0]
- print("list1[0]: ", list1[0]) # list1[0]: chemistry
复制代码 拼接列表
- print('列表相加:', [1, 2, 3] + [4, 5, 6])# 列表相加: [1, 2, 3, 4, 5, 6]
复制代码 列表相乘
- print('列表相乘:', ['a', 'b']*3) # 列表相乘: ['a', 'b', 'a', 'b', 'a', 'b']
复制代码 判断
- print('判断列表元素是否存在于列表中:', 'a' in ['a', 'b']) # True
- print('判断列表元素是否存在于列表中:', 'a' not in['a', 'b']) # Falue
复制代码 遍历列表
python 迭代列表中元素,主要有三种方式,具体如下:
第一种方法(直接)- list1 = ['physics', 'chemistry', 1997, 2000]
- for item in list1:
- print(item)
复制代码或者 - names = ['james', 'michael', 'emma', 'emily']
- index = 0 #通过while循环来列出所有元素
- while index < len(names):
- print(names[index])
- index += 1
复制代码 第二种方法range
借助 range 和 len 内置函数,通过元素索引遍历列表元素; - list1 = ['physics', 'chemistry', 1997, 2000]
- for i in range(len(list1)):
- print(i, list1[i])
复制代码 第三种方法enumerate
通过内置枚举函数 enumerate 直接获取遍历的索引和元素; - list1 = ['physics', 'chemistry', 1997, 2000]
- for i, item in enumerate(list1):
- print(i, item)
复制代码 列表推导式
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式,使用列表生成式可以节省很多行代码
语法结构如下: - # 普通的生成式[表达式 for 变量 in 旧列表]# 加条件的生成式[表达式 for 变量 in 旧列表 if 条件]# if...else条件的生成式[表达式 if 条件1 else 条件2 for 变量 in 旧列表]
复制代码过滤掉名词字母长度不足4的名字,示例代码如下: - names = ["Tom", "Lily", "Jack", "Steven", "Bod"]
- # 在不是用列表生成式的过程
- news_names = []
- for name in names:
- if len(name) > 3:
- news_names.append(name)
- print(news_names) # ['Lily', 'Jack', 'Steven']
- # 使用列表生成式
- new_names = [name for name in names if len(name) > 3]
- print(new_names) # ['Lily', 'Jack', 'Steven']
复制代码将1-100的整数可以被3和5整除的数字组成一个新的列表, 示例代码如下所示: - # 旧方法
- number_list = []
- for i in range(101):
- if i % 3 == 0 and i % 5 == 0:
- number_list.append(i)
- print(number_list) # [0, 15, 30, 45, 60, 75, 90]
-
-
- # 列表生成式
- new_num_list = [i for i in range(101) if i % 3 == 0 and i % 5 == 0]
- print(new_num_list) # [0, 15, 30, 45, 60, 75, 90]
复制代码将0到10的奇数和0到5的偶数组成一个不重复的列表,示例代码如下所示: - # 将0到10的奇数和0到5的偶数组成一个不重复的列表
- # 旧方法
- news_number_list = []
- for x in range(10):
- if x % 2 != 0:
- for y in range(5):
- if y % 2 == 0:
- news_number_list.append([x, y])
- print(news_number_list)
- # [[1, 0], [1, 2], [1, 4], [3, 0], [3, 2], [3, 4], [5, 0], [5, 2], [5, 4], [7, 0], [7, 2], [7, 4], [9, 0], [9, 2],[9, 4]]
- # 新方法
- news_num_list = [[x, y] for x in range(10) if x % 2 != 0 for y in range(6) if y % 2 == 0]
- print(news_num_list)
- # [[1, 0], [1, 2], [1, 4], [3, 0], [3, 2], [3, 4], [5, 0], [5, 2], [5, 4], [7, 0], [7, 2], [7, 4], [9, 0], [9, 2],[9, 4]]
复制代码将列表中的数字大于8000的加200 小于等于8000的加500,示例代码如下: - # 将列表中的数字大于8000的加200 小于等于8000的加500
- number = [5000, 10000, 4500, 80000, 12000]
-
- # 旧方法
- for i in number:
- if i > 8000:
- i += 200
- else:
- i += 500
- print(number) # [5500, 10200, 5000, 80200, 12200]
-
-
- # 新方法
- new_number = [i + 200 if i > 8000 else i + 500 for i in number]
- print(new_number) # [5500, 10200, 5000, 80200, 12200]
复制代码 列表常用方法
获取列表长度
len() 方法返回列表元素个数。 - print(len([1, 2, 3])) # 3
复制代码 列表后面添加元素
append() 方法用于在列表末尾添加新的对象。 - food=['egg', 'fish', 'cake', 'tomato']
- food.append('ice') #在list的末尾添加元素
- print(food)
复制代码 指定位置添加元素
insert() 函数用于将指定对象插入列表。 - food=['egg', 'fish', 'cake', 'tomato']
- food.insert(1, 'meat') #在1这个位置添加元素
- print(food)
复制代码 删除元素
pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。 - food=['egg', 'fish', 'cake', 'tomato']
- food.pop() #删除list末尾的元素
- print(food)
- food.pop(2) #删除索引2的元素
- print(food)
复制代码定义 remove() 方法具有指定值的首个元素,如果有重复,删除的是第一次出现的元素,如果元素不存在会报错 - list2 = [1, 2, 4, 5, 7, 4]
- list2.remove(4)#从列表中找出第一个数值为4的值然后删除,不管第二个
- print('remove:', list2)
复制代码 返回的是某个元素在列表里面的个数
count()方法返回元素出现次数 - fruits = ['apple', 'banana', 'cherry']
- number = fruits.count("cherry")
- print(number)
复制代码 合并列表
定义 extend()方法将列表元素(或任何可迭代的元素)添加到当前列表的末尾 - list1 = [1, 3, 3, 4, 5]
- list2 = [6, 5, 8, 9]
- list1.extend(list2) #在列表1后面添加列表2
- print(list1)
复制代码 返回的是元素在列表中的第一个位置
定义 index()方法返回该元素最小索引值(找不到元素会报错) - list2 = [1, 2, 4, 5, 7, 4]
- print('index:', list2.index(4)) # 从列表中找出第一个数值为4的索引位置,不管第二个
复制代码 排序
从小到大排序,类型不能混 ,使用的是ASCII值进行排序 - list2 = [1, 2, 4, 5, 7, 4]
- list2.sort()#对原列表进行排序
- print('sort;', list2)
复制代码 将列表进行翻转
定义reverse() 方法反转元素的排序顺序 - fruits = ['apple', 'banana', 'cherry']
- fruits.reverse()
- print(fruits)
复制代码 清除列表
定义 clear()方法清空列表所有元素 - list2 = [1, 2, 4, 5, 7, 4]
- list2.clear()
- print(list2)
复制代码 浅拷贝列表
定义 copy()方法返回指定列表的副本 ,如果某个元素是引用类型那么复制的就是这个元素的地址 - fruits = ['apple', 'banana', 'cherry', 'orange']
- c = fruits.copy()
- print(c
复制代码 深拷贝列表
使用用deepcopy()方法,才是真正的复制了一个全新的列表,包含原列表内部的引用类型 - import copy
- old = [1,[1,2,3],3]
- new = copy.deepcopy(old)
复制代码注意: 使用深浅拷贝需要导入copy模块,因为深拷贝要拷贝的元素跟多,所以速度会远不如浅拷贝,在编程的过程中要注意避免造成多余的系统负担;
到此这篇关于Python入门之列表用法详解的文章就介绍到这了,更多相关Python 列表内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:  进行删除处理。
4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
|