Python入门之列表用法详解

目录
  • 列表是什么
  • 列表的CRUD
    • 创建列表
    • 访问列表中的值
    • 更新列表
    • 删除元素
    • 拼接列表
    • 列表相乘
    • 判断
    • 遍历列表
  • 列表常用方法
    • 获取列表长度
    • 列表后面添加元素
    • 指定位置添加元素
    • 删除元素
    • 返回的是某个元素在列表里面的个数
    • 合并列表
    • 返回的是元素在列表中的第一个位置
    • 排序
    • 将列表进行翻转
    • 清除列表
    • 浅拷贝列表
    • 深拷贝列表

列表是什么

列表是元素的集合,存储在一个变量中。

列表中存储的元素类型没有限制,根据需要动态分配和回收内存

列表中的每个元素都会分配一个数字用来表示它的位置(索引),第一个索引是 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 列表内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python中的列表及其操作方法

    目录 一.列表简介 二.访问列表元素 三.修改.添加和删除列表元素 1.修改列表元素 2.在列表中添加元素 3.从列表中删除元素 四.对列表元素排序 五.确定列表长度 六.遍历列表 七.创建数值列表 1.函数range()的使用 2.创建数字列表 3.列表解析 4.处理数字列表的函数应用 八.切片 九.元组 前言: 本文的主要内容是介绍Python中的列表及其方法的使用,涉及到的方法包括对列表元素进行修改.添加.删除.排序以及求列表长度等,此外还介绍了列表的遍历.数值列表.切片和元组的一些操作,

  • Python列表list的详细用法介绍

    目录 一. 创建列表 1.1 第一种 1.2 第二种 二. 查询列表 2.1 获取列表元素索引 2.2 获取列表单个元素 2.3 获取列表多个元素 2.3 判断元素是否存在于列表 三. 列表添加操作 四. 列表删除操作 五. 修改列表元素 六. 列表排序操作 一. 创建列表 列表(list)作为Python中基本的数据结构,是存储数据的容器,相当于其它语言中所说的数组. 模拟出的结构如下: 创建列表有两种方式: 1.1 第一种 使用“[ ]”进行创建,内部元素可以是任意数据类型: list1=[

  • Python列表去重的几种方法整理

    请定义函数,将列表[10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1]中的重复元素除去,写出至少3种方法. 方法一:利用集合去重 list_1=[10, 1, 2, 20, 10, 3, 2, 1, 15, 20, 44, 56, 3, 2, 1] def func1(list_1): return list(set(list_1)) print('去重后的列表:',func1(list_1)) 方法二:利用for循环 list_2 = [10

  • 详解Python列表解析式的使用方法

    目录 列表解析式的优势 如何在 Python 中创建列表 循环 map() 对象 列表解析式 哪种方法更有效 高级解析式 条件逻辑 集合解析式 字典解析式 海象运算符 什么时候不要使用解析式 注意嵌套的解析式 为大型数据集使用生成器 总结 Python 是一种极其多样化和强大的编程语言!当需要解决一个问题时,它有着不同的方法. 在本文中,将会展示列表解析式(List Comprehension).我们将讨论如何使用它?什么时候该或不该使用它? 列表解析式的优势 比循环更节省时间和空间. 需要更少

  • python学习之列表的运用

    目录 创建列表 常用函数 常用方法 列表推导式 列表推导式的嵌套 字符串的文本解析方法 深浅复制 浅复制 深复制 创建列表 list( ) # 创造列表 list(可迭代对象) # 将可迭代对象创造成列表 切片索引:列表[a:b] 切片索引赋值:列表[切片] = 可迭代对象 L = [2,3,4] L[0:1] = [23,34] #把L中的第一个换成[23,34] print(L) # [23, 34, 3, 4] L[2:] = [3.3,4.4,5.5] #[23, 34, 3.3, 4.

  • Python入门之列表用法详解

    目录 列表是什么 列表的CRUD 创建列表 访问列表中的值 更新列表 删除元素 拼接列表 列表相乘 判断 遍历列表 列表常用方法 获取列表长度 列表后面添加元素 指定位置添加元素 删除元素 返回的是某个元素在列表里面的个数 合并列表 返回的是元素在列表中的第一个位置 排序 将列表进行翻转 清除列表 浅拷贝列表 深拷贝列表 列表是什么 列表是元素的集合,存储在一个变量中. 列表中存储的元素类型没有限制,根据需要动态分配和回收内存 列表中的每个元素都会分配一个数字用来表示它的位置(索引),第一个索引

  • Python入门_条件控制(详解)

    条件控制其实就是if...else...(如果...条件是成立的,就做...:反之,就做...)的使用,其基本结构是: 具体看下面这个例子: def account_login(): # 定义函数 password = input('请输入密码:') # 输入密码 if password == '12345': # 如果输入密码是12345,则登录成功 print('登录成功') else: print('密码有误,请重新输入') # 否则提示密码有误,请重新输入 account_login()

  • python正则-re的用法详解

    天在刷题的时候用到了正则,用的过程中就感觉有点不太熟练了,很久没有用正则都有点忘了.所以现在呢,我们就一起来review一下python中正则模块re的用法吧. 今天是review,所以一些基础的概念就不做介绍了,先来看正则中的修饰符以及它的功能: 修饰符 •re.I 使匹配对大小写不敏感 •re.L 做本地化识别匹配 •re.M 多行匹配,影响^和$ •re.S 使.匹配包括换行在内的所有字符 •re.U 根据Unicode字符集解析字符.这个标志影响\w \W \b \B •re.X 该标志

  • Python的Lambda函数用法详解

    在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数.今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式. 1.为什么要用lambda函数? 先举一个例子:将一个列表里的每个元素都平方. 先用def来定义函数,代码如下 def sq(x): return x*x map(sq,[y for y in range(10)]) 再用lambda函数来编写代码 map(lambda x: x*x,[y for y in r

  • Python中itertools的用法详解

    iterator 循环器(iterator)是对象的容器,包含有多个对象.通过调用循环器的next()方法 (next()方法,在Python 3.x中),循环器将依次返回一个对象.直到所有的对象遍历穷尽,循环器将举出StopIteration错误. 在for i in iterator结构中,循环器每次返回的对象将赋予给i,直到循环结束.使用iter()内置函数,我们可以将诸如表.字典等容器变为循环器.比如 for i in iter([2, 4, 5, 6]): print i 标准库中的i

  • Python List remove()实例用法详解

    描述 remove() 函数用于移除列表中某个值的第一个匹配项. 语法 remove()方法语法: list.remove(obj) 参数 obj -- 列表中要移除的对象. 返回值 该方法没有返回值但是会移除列表中的某个值的第一个匹配项. 实例 以下实例展示了 remove()函数的使用方法: #!/usr/bin/python aList = [123, 'xyz', 'zara', 'abc', 'xyz']; aList.remove('xyz'); print "List : &quo

  • Python配置文件yaml的用法详解

    目录 一.PyYaml 二.yaml语法 1.基本规则 2.yaml转字典 3.yaml转列表 4.复合结构 5.基本类型 6.引用 7.强制转换 8.分段 三.构造器(constructors).表示器(representers).解析器(resolvers ) 四.示例 YAML是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互.YAML类似于XML,但是语法比XML简单得多,对于转化成数组或可以hash的数据时是很简单有效的. 一.PyYaml 1.loa

  • Python中re.findall()用法详解

    在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.本文重点给大家介绍python中正则表达式 re.findall 用法 re.findall():函数返回包含所有匹配项的列表.返回string中所有与pattern相匹配的全部字串,返回形式为数组. 示例代码1:[打印所有的匹配项] import re s = "Long live the people's Republic of China" ret = re.findall('h', s) print(r

  • Python入门之字符串操作详解

    目录 字符串 字符串常用操作 拼接字符串 字符串复制 计算字符串的长度 截取字符串和获取单个字符 字符串包含判断 常用字符串方法 把字符串的第一个字符大写 统计字符串出现的次数 检查字符串开头 检查字符串结尾 大写转小写 小写转大写 大小写翻转 标题化字符串 空格删除 合并字符串 分割字符串 将字符串按照行分割 判断字符串只是数字 判断是空字符 字符串填充 字符串搜索 字符串替换 格式化字符串 字符串编码转换 字符串 字符串常用操作 拼接字符串 拼接字符串需要使用‘+’运算符可完成对多个字符串的

  • Python正则表达式re.search()用法详解

    re.search():匹配整个字符串,并返回第一个成功的匹配.如果匹配失败,则返回None pattern: 匹配的规则, string : 要匹配的内容, flags 标志位 这个是可选的,就是可以不写,可以写, 比如要忽略字符的大小写就可以使用标志位 flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为: re.I 忽略大小写 re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境 re.M 多行模式 re.S 即为 . 并且包括换行符

随机推荐