首页 > 编程语言 >Python在循环中修改遍历的字符串

Python在循环中修改遍历的字符串

时间:2023-06-07 17:55:56浏览次数:343  
标签:遍历 迭代 Python remove lst 字符串 astr

  • 举例展示

Python在循环中修改遍历的字符串,将不会影响循环的遍历顺序和执行轮数

astr = "abcaef"
bstr = "bcef"
for i in astr:
    if i not in bstr:
        astr = astr.replace(i,'')
        print(i)

如上示例代码中,当i='a'时,bstr中没有'a',输出'a'并将astr中的所有'a'去掉;

但后续遍历时依然会遍历原字符串astr,于是我们得到代码执行输出两次'a'

  • 原因分析

字符串在Python中属于不可变类型

for...in...的迭代实际是将可迭代对象转换成迭代器,再重复调用next()方法实现的

  • 对比说明

在python中,可变对象(列表、字典)在迭代时会发生变化,甚至导致错乱,如:

lst = [1, 2, 3, 4, 5]
for x in lst:
    if x%2==0:
        lst.remove(x) #remove,insert等操作
print(lst)

解决方法:创建一个浅拷贝

lst = [1, 2, 3, 4, 5]
for x in lst[:]:   #注意此处修改
    if x%2==0:
        lst.remove(x) #remove,insert等操作
print(lst)

得到正常的输出>>>[1, 3, 5]

 

标签:遍历,迭代,Python,remove,lst,字符串,astr
From: https://www.cnblogs.com/shui00cc/p/17464134.html

相关文章

  • python线性脚本生成基本eml邮件,压缩文件,接口灌数据
    1importdatetime,zipfile,tarfile,logging,os,string,random,ipaddress,uuid,pytz,py7zr2importio,socket3fromemail.mime.textimportMIMEText4fromemail.mime.multipartimportMIMEMultipart5fromemail.mime.applicationimportMIMEA......
  • 实验六 turtle绘图与Python库应用编程体验
    试验任务一实验源码 task1fromturtleimport*defmove(x,y):'''画笔移动到坐标(x,y)处'''penup()goto(x,y)pendown()defdraw(n,size=100):'''绘制边长为size的正n变形'''foriinrange(n):......
  • Python: jwt
     importjwtfromdatetimeimportdatetimepayload_data={'sub':'4242','iss':'issuer',#issuerofthetoken'name':'JessicaTemporal','nickname':'Jess&#......
  • Python&Excel办公自动化
    操作工作簿01新建一个excel工作簿#2023-4-17importxlwingsasxw#启动excel,但不新建工作簿app是什么,app是excel程序本身app=xw.App(visible=True,add_book=True)#新建一个工作簿workbook=app.books.add()#保存新建的工作簿workbook.save('D:\python_data/tes......
  • 浮点数转字符串
    浮点数转字符串usingUnityEngine;publicclassJuse:MonoBehaviour{floata=2;floatb=6666.6666f;voidStart(){Debug.Log(a.ToString("#00"));//输出:02Debug.Log(a.ToString("#00.00"));//输出:02.00......
  • 各种数据库连接字符串
    SqlServer “DataSource=127.0.0.1;InitialCatalog=dbname;UserId=sa;Password=****;”Oracle"DataSource=127.0.0.1/dbname;port=1521;UserId=orcl;Password=***'*;"DB2"Server=127.0.0.1:50000;Database=dbname;UID=DBADM;PWD=****;"M......
  • 【acwing】Trie字符串统计
    Trie树学习感受相比于之前学习的kmp匹配算法,Trie树的实现还是非常好理解的。(kmp算法太难了orz)从直观的模拟过程来看,trie树就像一颗树一样,从上(根节点)到下(叶节点)有序串联起来组成一个字符串。每一个额外标记结束的位置表示字符串的结束,通过计算标记数即可指导一共有多少该字符串......
  • java代码调用Python代码
    1,使用runtime调用Python脚本String[]arguments=newString[]{"E:\\ProgramFiles\\python.exe","E:\\wzCode\\signal.py",Arrays.toString(datas),String.valueOf(Num)};......
  • python基础20
    绝对导入和相对导入绝对导入始终以执行文件位置查找相对导入使用符号(.)句点符(.).表示当前路径..表示上一级目录相对导入就可以不按照执行文件所在位置为基准,而是参照当前文件所在位置当文件中......
  • python的名称空间和作用域
    1、  2、内置名称空间:Python解释器启动则产生,关闭即销毁 全局名称空间:存放的名字:运行顶级代码产生的名字,或者说不是函数的定义,也不是内置的,剩下的都是。存活的周期:Python文件执行则产生,Python文件运行完毕后销毁 局部名称空间:存放的名字:再调用函数时,运行函数体代......