首页 > 其他分享 >列表的增删改查(range用法:)

列表的增删改查(range用法:)

时间:2023-10-19 16:23:24浏览次数:34  
标签:删除 索引 元素 改查 lst 列表 print range 增删

列表的添加

.append()

lst = []
# 向列表末尾添加内容
# append() 追加
lst.append("张绍刚")
lst.append("赵本山")
lst.append("张无忌")
print(lst)
# insert() 在指定位置插入,原先该位置以后的所有元素都需要往后挪n个位置,因此插入的效率极低。
lst.insert(0, "赵敏")    #在第0个位置插入
print(lst)
# extend() 可以合并两个列表, 批量的添加
lst.extend(['武则天', "嬴政", "马超"])
print(lst)

输出结果 :

['张绍刚', '赵本山', '张无忌']
['赵敏', '张绍刚', '赵本山', '张无忌']
['赵敏', '张绍刚', '赵本山', '张无忌', '武则天', '嬴政', '马超']

列表的删除

无论是使用del命令,还是使用.remove()命令或者是.pop()命令,删除列表是对原列表直接进行操作,这与之前的字符串操作有很大区别

因此要连续操作,删除指定位置的元素,最好的操作方式是从后往前删,不然会改变实际元素位置的。

del lst删除整个lst列表

del lst[]删除列表中的元素

为了方便展示,我特意把元素按照本身位置进行了标记,请细细体会两者的差异,

lst = ['0', '1', '2', '3', '4', '5', '6']
# 依次删除指定索引位置的元素
del lst[5]  # 删除索引为5的元素
print(lst)
del lst[3]  # 删除索引为3的元素
print(lst)
del lst[1]  # 删除索引为1的元素
print(lst)

#结果是:
['0', '1', '2', '3', '4', '6']
['0', '1', '2', '4', '6']
['0', '2', '4', '6']

如果依次从前向后删除元素,删除后元素的位置会发生变化,列表的位数会缩短,命令甚至会超出。

# 删除
lst = ['0', '1', '2', '3', '4', '5', '6']
# 依次删除指定索引位置的元素
del lst[1]  # 删除索引为1的元素
print(lst)
del lst[3]  # 删除索引为3的元素
print(lst)
del lst[5]  # 删除索引为5的元素
print(lst)

#输出结果
['0', '2', '3', '4', '5', '6']
['0', '2', '3', '5', '6']
Traceback (most recent call last):
  File "D:\Python\列表\删除方法.py", line 43, in <module>
    del lst[5]  # 删除索引为5的元素
        ~~~^^^
IndexError: list assignment index out of range

del命令需要指定元素的索引位置,而.remove()命令可以规避这个溢出的问题。

使用.remove()命令进行删除,不需要知道列表的位置直接删除元素。

lst = ['赵敏', '张绍刚', '赵本山', '张无忌', '武则天', '嬴政', '马超']
lst.remove("马超")  # 删除某个元素
print(lst)

使用.pop()命令删除

pop() 是Python列表(list)的一个方法,用于删除并返回列表中的指定索引位置的元素。这个方法可以有一个可选的参数,用来指定要删除的元素的索引,如果默认不写是删除并返回列表中的最后一个元素(-1)。

语法:

returned = list.pop(index)
  • list:要操作的列表。
  • index:要删除的元素的索引。如果不提供索引,默认为 -1,即删除并返回列表中的最后一个元素。
  • returned:被删除的元素,也是被 pop() 返回的值。
fruits = ["apple", "banana", "cherry"]

# 删除并返回索引为1的元素
removed_fruit = fruits.pop(1)

print(removed_fruit)  # 输出: "banana"
print(fruits)         # 输出: ["apple", "cherry"]

pop() 方法会修改原始列表,并且返回被删除的元素,所以你可以选择将其赋值给一个变量以备后续使用。如果不提供索引参数,它将默认删除并返回最后一个元素。如果索引超出了列表的范围,将引发 IndexError 异常。

 

 # 修改

lst = ['赵敏', '张绍刚', '赵本山', '张无忌', '武则天', '嬴政', '马超']
lst[4] = "恺"  # 直接用索引就可以进行修改操作
print(lst)

#输出结果
['赵敏', '张绍刚', '赵本山', '张无忌', '恺', '嬴政', '马超']


# 查询

lst = ['赵敏', '张绍刚', '赵本山', '张无忌', '恺', '嬴政', '马超']
print(lst[4])  # 直接用索引进行查询操作

#输出结果
恺

 

小练习:把列表内所有的姓张的人修改成姓王,其余不变

 

思考第1步:把列表内的所有元素取出来

lst = ['赵敏', '张绍刚', '张无忌', '武则天', '嬴政', '马超']

for item in lst:#用for循环取出所有的元素内容
    print (item)    #顺序打印所有lst[]里的内容

#输出结果为:
赵敏
张绍刚
张无忌
武则天
嬴政
马超

 

思考第2步:把所有以“张”开头的元素,替换为以“王”开头的元素

for item in lst:#用for循环取出所有的元素内容
    if item.startswith("张"):#判断是否以"张"开头
        new_name ="王"+item[1:]#元素的组合方法用+号,配合从第1号位到最后。
        print(new_name)

#输出结果为:
王绍刚
王无忌

*此时,我们看不到元素的索引位置

 

思考第3步:如何把新得到的名字丟回列表

for循环想要计数. 必须借助于range()

range()用法:

range(n): 从0数到n. 不包含n
range(m, n): 从m数到n, 不包含n
range(m, n, s): 从m数到n, 不包含n, 每次的间隔是s

我们举例

lst = ['赵敏', '张绍刚', '张无忌', '武则天', '嬴政', '马超']

# 使用for i in range(len(lst))
for i in range(len(lst)):
    print(lst[i])  # 输出:1 2 3 4 5

# 使用for item in lst
for item in lst:
    print(item)  # 输出:1 2 3 4 5

 

之前for循环的写法for item in lst:  , 我们看不到元素的索引位置,因此我们需要如下写法for i in range(len(lst))=for i in range(0,len(lst))两种写法都是从0到列表的最后一位

lst = ['赵敏', '张绍刚', '张无忌', '武则天', '嬴政', '马超']

# for item in lst:  # 此时, 我们看不到元素的索引位置
for i in range(len(lst)):  # len(lst)列表的长度 ->  可以直接拿到列表索引的for循环
    item = lst[i]  # item依然是列表中的每一项
    if item.startswith("张"):
        # 张绍刚
        new_name = "王"+item[1:]
        print(new_name)
        # 把新名字丢回列表(需要索引了?)
        lst[i] = new_name  # 修改

print(lst)

这里着重讲解for i in range(len(lst))这个由range(0,7)演变而来的

 

在列表lst = ['赵敏', '张绍刚', '张无忌', '武则天', '嬴政', '马超']中,一共存在6个列表元素,需要表示为range(0,7)range(7),为了方便操作,列表最好要用len(lst)自动数出来。

标签:删除,索引,元素,改查,lst,列表,print,range,增删
From: https://www.cnblogs.com/Magiclala/p/17677563.html

相关文章

  • 自定义文档 Selection、Range 属性
    一document.execCommand现阶段项目中使用方法document.execCommand可直接操控选中文本,添加属性(操控文档)。但是由于fdocument.execCommand方法兼容性不好,浏览器之间的实现不一致,没有一个统一的标准。且自定义程度不高。官方已经将该方法移除。推荐使用Selection和Range......
  • JavaWeb-JDBC增删改查
    目录1.MySQL准备2.JDBC项目3.JDBC新增4.JDBC查询5.JDBC修改6.JDBC删除内容MySQL准备新建表t_personCREATETABLE`t_person`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'主键',`name`varchar(30)NOTNULLCOMMENT'姓名',`birthdate`datetim......
  • SpringBoot 1项目创建及Mybatis-plus实现数据增删改查
    一.项目创建及配置1.项目创建点击finish完成创建pom.xml加上以下依赖<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version>......
  • 循环增删 ArrayList ,小心有坑
    编程过程中常常需要使用到集合,比如:ArrayList,当我们在for循环增删的时候,一不小心就会踩坑。如下代码List<String>arrayList1=newArrayList<String>();arrayList1.add("1");arrayList1.add("2");for(Strings:arrayList1){if("1".equals(s)){......
  • CF908D New Year and Arbitrary Arrangement 题解
    NewYearandArbitraryArrangement思路:期望题果然还是恶心呀!我们设\(f[i][j]\)表示当串中有\(i\)个\(a\)和\(j\)个\(ab\)时的方案数。为了方便,设\(A=\dfrac{P_a}{P_a+P_b},B=\dfrac{P_b}{P_a+P_b}\)。显然,可以这样转移:\[f[i][j]=f[i+1][j]\timesA+f[i][i+j]\ti......
  • Codeforces Round 694 (Div. 2) A. Strange Partition
    给一个长为\(n\)的数组\(a\)和一个正整数\(x\)。你可以执行以下操作任意次:用两个相邻元素的和替换这两个元素。如\([\cdots,a_i,a_{i+1},\cdots]\rightarrow[\cdots,a_i+a_{i+1},\cdots]\)。一个数组\(b=[b_1,\cdots,b_k]\)的美丽值定义为\(\sum_{i=1}^{k}......
  • C++11新特性之基本范围的For循环(range-based-for)
    C++11新特性之基本范围的For循环(range-based-for)最新推荐文章于 2023-07-2219:30:58 发布Rayen0715于2017-01-0713:49:35发布49588收藏174版权Range-Based-For熟悉C++98/......
  • mongosh数据库增删改查
    通过MongoDBShell新建一个以自己名字(英文全拼,例如Sunjing)的数据库,并创建一个名为“grade”的集合,在该集合中插入自己上学期五门课程的成绩数据,具体包括课程名称,分数,任课教师,考试时间(或者其他相关信息)。并依次完成对数据进行增、删、改、查等基本操作,首先,打开MongoDBShell,连接......
  • SQL 语句 增删改查、边学习边增加中..... 这一部分为select
    SQL语句按照最大的类别分为1、增加insert 2、删除delete  https://www.cnblogs.com/kuangmeng/p/17756654.html3、修改update4、查询select: https://www.cnblogs.com/kuangmeng/p/17756425.html这一部分为select查询操作,以及对应的Leecode题,进行加......
  • 深入浅出MySQL MRR(Multi-Range Read)
    本文已收录至GitHub,推荐阅读......