【Python】序列与列表(列表元素的增删改查,求之,列表推导式、列表的拷贝)

news2024/11/30 2:46:05

一、序列

序列的概念:按照某种顺序排列的数据类型就叫做序列,比如字符串,列表,元组,集合

序列的共同点是都有下标,支持index()方法和count(),也支持切片处理(等同于字符串序列的切片处理)

l1 = [0, 1, 1, 2, 3, 4, 2, 4, 5]
print(l1.index(1))
print(l1.count(1))
print(l1[:3][::-1])
print(l1[::2])

二、列表(可变类型)

列表 表达符号使用中括号 [] 里面可以是数字,字符串,布尔类型,列表,元组,字典,集合...

# 定义空列表

new_empty_list = list()
print(empty_list, new_empty_list)

列表是一个有序,并且元素可以重复的和可变动的元素类型

list1 = ['Apple', 'Orange', 'Grape']
list2 = ['Orange', 'Apple', 'Grape']
if list1 == list2:
    print("{}和{}相等".format(list1, list2))
else:
    print("{}和{}不相等".format(list1, list2))

1、列表元素的删除

pop方法

pop方法可以进行删除列表中的元素,默认删除最后一个索引位置的元素,删除并同时可以返回此元素,也可以指定下标索引去删除

list1 = ['Apple', 'Orange', 'Grape']

print(list1.pop())
print(list1)
print(list1.pop(0))
print(list1)

remove()方法

remove()方法是指定元素去删除;

list1 = ['Apple', 'Orange', 'Grape','Durian']

list1.remove('Durian')
print(list1)

del

也可以通过指定对应的下标元素值去删除 也可以针对变量进行删除 删除后就会报变量未定NameError: name 'xxxx' is not defined

list1 = ['Apple', 'Orange', 'Grape','Durian']

del list1[1]
print(list1)

clear()方法

clear()方法是清空列表;

list1 = ['Apple', 'Orange', 'Grape','Durian']

list1.clear()
print(list1)


2、列表元素的增加

1、append()方法

默认是添加元素到列表的末尾;

list1 = ['Apple', 'Orange', 'Grape']

list1.append('Pear')
print(list1)

2、insert()方法 指定索引位置,在索引前面一个位置插入

list1 = ['Apple', 'Orange', 'Grape']

list1.insert(1, 'Cherry')
print(list1)

3、extend()方法 是可以跟其他序列进行拼接 相当于+拼接

list1 = ['Apple', 'Orange', 'Grape']

list3 = ['watermelon']
string1 = 'test'
list1.extend(list3)
print(list1)
print(list1 + list3)

# 字符串如果被使用这个extend方法添加到列表中,则先会把字符串拆分成列表,然后添加进去

list1 = ['Apple', 'Orange', 'Grape']

list1.extend(string1)
print(list1)

3、列表元素的获取

list1 = ['Apple', 'Orange', 'Grape']
list2 = ['Orange', 'Apple', 'Grape']

print(list1[-1], list1[2])

列表长度的获取

num_list = [1, 2, 3, 4, 5,]
print(len(num_list))
有几个元素,列表长度就为几

4、列表元素的修改

list2 = ['Orange', 'Apple', 'Grape']

list1[2] = 'Durian'
print(list1)

5、列表元素的排序

sort()方法

sort()方法可以实现对列表元素进行排序 按照默认的由低到高的顺序排序;

num_list = [2, 1, 6, 3, 7, 9]
num_list.sort()
print(num_list)

alpha_list = ['b', 'd', 'w', 'x', 'a', 'c']
alpha_list.sort()
print(alpha_list)

# # sort()方法的reverse参数可以实现反向输出,默认不加的话就是reverse=False(也就是关闭了反向输出),如果需要指定则照如下方式使用

num_list = [2, 1, 6, 3, 7, 9]
num_list.sort()
print(num_list)

num_list.sort(reverse=True)
print(num_list)

reverse()方法

reverse()方法可以实现将列表元素反向输出;

num_list = [2, 1, 6, 3, 7, 9]

num_list.reverse()
print(num_list)

总结:列表元素的反向输出有三种办法

list1 = ['Apple', 'Orange', 'Grape']
list2 = ['Orange', 'Apple', 'Grape']
num_list = [2, 1, 6, 3, 7, 9]

# 1) 列表切片实现
print(num_list[::-1])
# 2)  reverse()方法
print(list2)
list2.reverse()
print(list2)
# 3) reversed()内置函数 返回序列给定的值的一个反向的迭代器 如果需要输出对应的数据类型 则需要使用对应的数方法进行转化
print(list(reversed(list2)))

6、列表元素的去重

not in

对num_list进行去重;

num_list = [1, 2, 3, 4, 5, 5, 4, 3]
empty_list = []
for i in num_list:
    if i not in empty_list:
        empty_list.append(i)
print(empty_list)


7、 列表元素的求值

列表元素的求和

digit_list = [3, 4, 5, 6]

# 1) for循环求和
for_total = 0
for i in digit_list:
    for_total += i
print(for_total)
digit_list = [3, 4, 5, 6]

# 2) while循环求和
while_total = 0
i = 0
while i < len(digit_list):
    while_total += digit_list[i]
    i += 1
print(while_total)
# 3) 使用sum函数实现
print(sum(digit_list))

列表元素的最大值,最小值

# 求列表最大值 求平均值的  求最小值的

digit_list = [3, 4, 5, 6]
print(max(digit_list))
print(min(digit_list))

列表元素的平均值

# 1) statistics module,其中包含一个内置函数来计算数字的平均值或平均值statistics.mean() functio用于计算输入值或数据集的平均值/平均值。


digit_list = [3, 4, 5, 6]

from statistics import mean
print(mean(digit_list))

# 2) 先求和再求平均值

digit_list = [3, 4, 5, 6]

print(sum(digit_list) / len(digit_list))

# 3) NumPy 模块有一个内置函数来计算数据集或列表中存在的数据项的平均值/平均值。

digit_list = [3, 4, 5, 6]

import numpy
print(numpy.average(digit_list))

8、 列表推导式/列表生成式

# 使用普通for循环创建一个1-10的一个列表

slist = []
for i in range(1,11):
    slist.append(i)
print(slist)

# 列表推导式语法:[exp1 for x in data if condition]

print([x*x for x in range(1, 11)])
print(sum([i for i in range(1,11)]))

9、列表的拷贝

浅拷贝

# 浅拷贝 深拷贝 针对可变序列 面试重点知识 需要记忆
"""
copy()方法是浅拷贝(shallow copy) 如果一个可变序列是多层次嵌套的值,则浅拷贝因为是浅层次的拷贝,所以拷贝后的对象浅层次的值不会随着之前的源对象
值改变而改变,而深层次的嵌套的值因为浅拷贝无法拷贝过去,也就是说拷贝的是源数据的一个引用,因此如果我们修改浅层次的数据,源数据不会更改,深层次数据
修改后,源数据也会修改 可以理解为深层次的数据是做了个软链接
"""
list3 = [1, 2, 3, ['a', 'b', 'c'], 5]
list4 = list3.copy()
print(id(list3), id(list4))
list4[0] = 0
list4[-2][0] = 'a1'
print(list3)
print(list4)
浅拷贝,不是完整的拷贝,他只能拷贝第一层的元素;

如果你是多层列表的话,他只能拷贝第一层元素,第二层元素他并没有拷贝,相当于做了一个引用,并不是真的拷贝走了,所以你在修改浅拷贝列表的第二层元素的时候,相当于在原列表上修改了;

# 这里发现浅拷贝深层次的子列表对象的内存地址值id是完全一样的 说明深层次只是做了个引用 无法实现创建新对象

print(id(list3[-2]))
print(id(list4[-2]))

深拷贝

list5 = deepcopy(list3)
print(list5)
list5[0] = 9
list5[3][1] = 'bag'
print(list3)
print(list5)
深拷贝,他就是完整的拷贝;

如果是多层列表的话,就拷贝走了整个列表,相当于创建了一个新的完整的的列表,所以你在新的列表上进行修改,是不会影响到原列表的;

# 这里发现深拷贝的深层次的子列表对象的内存地址值id是完全不一样的 说明实现创建了新对象

print(id(list3[-2]))
print(id(list5[-2]))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/363683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode(每日一题)——1140. 石子游戏 II

摘要 ​​​​​​1140. 石子游戏 II 877. 石子游戏 1406. 石子游戏 III 375. 猜数字大小 II 464. 我能赢吗 486. 预测赢家 1025. 除数博弈 一、动态规划解析 Alice一开始有两个选择&#xff1a;拿前一堆/前两堆石子。如果 Alice 拿前一堆&#xff0c;那么轮到 Bob 时…

Propargyl-PEG1-SS-PEG1-PFP ester,1817735-30-0,炔基应用于生物标记

【中文名称】丙炔-单乙二醇-二硫键-单乙二醇-五氟苯酚酯【英文名称】 Propargyl-PEG1-SS-PEG1-PFP ester【结 构 式】【CAS号】1817735-30-0【分子式】C16H15F5O4S2【分子量】430.4【基团部分】炔基基团【纯度标准】95%【包装规格】1g&#xff0c;5g&#xff0c;10g&#xff0c…

互联网行业中,哪些岗位越老越吃香?

你是不是也想转行IT行业&#xff0c;找一门适合自己学习&#xff0c;能拿高薪的技术&#xff0c;最好还越老越吃香&#xff1f;或许先应该看看对应岗位&#xff0c;老资格的同行们可以拿到的薪资数再做判断。整体上看&#xff0c;大部分岗位的起薪水平相差不大&#xff0c;但随…

matplotlib绘制三维图

目录线状堆积图 PolygonPlot三维表面图 SurfacePlot散点图ScatterPlot柱形图 BarPlot三维直方图螺旋曲线图 LinePlotContourPlot轮廓图网状图 WireframePlot箭头图二维三维合并文本图Text三维多个子图线状堆积图 PolygonPlot Axes3D.add_collection3d(col, zs0, zdir‘z’)  …

(考研湖科大教书匠计算机网络)第六章应用层-第一、二节:应用层概述和C/S及P2P

获取pdf&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;应用层概述二&#xff1a;客户/服务器&#xff08;C/S&#xff09;和对等&#xff08;P2P&#xff09;方式&#xff08;1&#xff09;客户/服务器&…

Vue页面组成及常用属性

一、Vue页面组成 目前的项目中&#xff0c;Vue页面都是采用组件套娃的形式&#xff0c;由一个一个的组件拼接而成整个页面。一个组件就是一个.vue文件。组件通常由template和script两部分组成&#xff1a; template部分&#xff1a;页面展示的具体元素内容&#xff0c;比如文字…

Type-c诱骗取电芯片大全

随着Type-C的普及和推广&#xff0c;目前市面上的电子设备正在慢慢淘汰micro-USB接口&#xff0c;逐渐都更新成了Type-C接口&#xff0c;micro-USB接口从2007年上市&#xff0c;已经陪伴我们走过十多个年头&#xff0c;如今也慢慢退出舞台。 今天我们评测的产品是市面上Type-C…

【OJ】最小字典序游戏

&#x1f4da;Description: 牌王和图王在玩一个游戏。 他们需要轮流移动字符串上的L&#xff0c;R指针&#xff0c;最后一位无法移动的人会输掉游戏。 给定一个字符串 s &#xff0c;起初有两个指针 L 和 R 都指向字符串的下标为k的位置(1 < k < | s |&#xff0c;|s…

CCNP350-401学习笔记(501-550题)

501、Refer to the exhibit. What is the effect of the configuration? A. The device will allow users at 192.168.0.202 to connect to vty lines 0 through 4 using the password ciscotestkey B. The device will allow only users at 192 168.0.202 to connect to vty …

Mybatis-Plus入门系列(20) -兼容多种数据库

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 文章目录前言方案分析1. 分页2. XML自定义SQL案例演示1. 配置2. 简单分页查询3. 带方言的分页查询参考前言 在我们实际开发软件产品过程中&#xff0c;数据库的类型可能不是确定的&#xff0c;也有客户…

PHP面试题

PHP相关 php7新特性 1.类型的声明 php7可以声明函数传参的类型和返回值的类型&#xff0c;比如可以用int&#xff0c;string声明参数和返回值的类型&#xff0c;如下&#xff1a; 代码&#xff1a;declare(strict_types1); function add(int $a,int $b):int{ return $a$b;…

深入浅出C++ ——手撕AVL树

文章目录前言一、AVL 树介绍二、AVL树节点的定义三、AVL树的插入四、AVL树的旋转五、AVL树的验证六、AVL树的删除七、AVL树的性能八、AVL树的实现前言 在前面的文章中介绍了map / multimap / set / multiset 容器&#xff0c;这几个容器的底层都是按照二叉搜索树来实现的。但是…

paddlepaddle目标检测

目录 1 参考链接 2 环境 3 数据集准备 4 训练 train.py 5 导出预测模型 6 预测 源码来自作者 夜雨飘零1&#xff0c;我对参考链接的代码略有修改&#xff0c;网盘地址 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;ipl5 1 参考链接 博客地址 基…

Linux 实现鼠标侧边键实现代码与网页的前进、后退

前言 之前一直是使用windows进行开发&#xff0c;最近转到linux后使用VsCode编写代码。 但是不像在win环境下&#xff0c;使用鼠标侧边键可以实现代码的前向、后向跳转。浏览网页时也不行&#xff08;使用Alt Left可以后退&#xff09;。 修改键盘映射实在没有那么方便&…

文案女王彭芳如何转变为“百万发售系统”创始人?我们来探个究竟!

智多星老师 她的输出跟智多星老师几乎毫无二致&#xff0c;是抄袭还是纯属巧合呢&#xff1f; 你们问的这个问题我也想知道&#xff0c;为了了解真相&#xff0c;我让我的一个学生把那个叫“彭芳老师”的视频给我看&#xff0c;当看到她的简介时&#xff0c;我非常震惊&#…

启智社区“我为开源狂”第六期活动小白教程之基础活跃榜

一、写在前面 春天来啦~启智社区第六期活动也来啦&#xff01; 有奖金的哦~~ 基础活跃榜奖金根据用户活跃程度进行100-300元的激励。 挑战升级榜需要用户完成相应任务&#xff0c;达标者可获得300-1000元的激励。 邀请助力榜根据用户邀请情况进行积分累加&#xff0c;按实际达…

游戏策划想要了解编程和引擎是应该从unity入手还是ue4入手?

建议 考虑自身的职业规划考虑本公司引擎使用情况考虑自身兴趣爱好学习引擎的同时多拆解市面上主流游戏、做游戏数据及系统分析 区别 除去以上内容&#xff0c;说下unity和ue的学习及使用区别&#xff1a; 适用类型&#xff1a; 3D – 两个引擎都具有强大的3D功能&#xff0…

ctcdecode安装

一、写在前面&#xff1a;ctcdecode代码较早&#xff0c;安装过程有许多坑。本文章为ctcdecode安装成功的记录&#xff0c;可能存在不适用的情况&#xff0c;欢迎大家补充。二、致谢&#xff1a;感谢文章https://blog.csdn.net/u011550545/article/details/87926995提供的宝贵参…

HashMap(JDK1.8)源码+底层数据结构分析

HashMap 简介底层数据结构分析 JDK1.8 之前JDK1.8 之后 HashMap 源码分析 构造方法put 方法get 方法resize 方法 HashMap 常用方法测试 感谢 changfubai 对本文的改进做出的贡献&#xff01; HashMap 简介 HashMap 主要用来存放键值对&#xff0c;它基于哈希表的 Map 接口实现…

【React npm】从零搭建react脚手架,发布组件库到npm,并实现按需加载(二)

发布react组件库前情回顾介绍搭建脚手架配置babelrc配置jsconfig写入组件demo修改主入口文件配置生产环境webpack配置package.json发布实现按需加载前情回顾 前面写过一篇&#xff0c;发布单个组件到npm的&#xff1a; https://blog.csdn.net/tuzi007a/article/details/12911…