每日速递:盘点一个列表中字符串替换的基础题目
回复“书籍”即可获赠Python从入门到进阶共10本电子书
(资料图)
今
日
鸡
汤
几时杯重把,昨夜月同行。大家好,我是Python进阶者。
一、前言前几天在Python最强王者交流群【Chloe】问了一道Python基础的问题,如下图所示。
原始数据如下所示:
lst=["Redcolor","Orange#","Green","Orange@","White"]char_lst=["#","color","@"]
说白了,就是字符串替换。
二、实现过程方法一这里【瑜亮老师】给了一个方法,代码如下所示:
lst=["Redcolor","Orange#","Green","Orange@","White"]char_lst=["#","color","@"]temp="----".join(lst)foriinchar_lst:temp=temp.replace(i,"")res=temp.split("----")res=list({i.strip()foriinres})print(res)
一个replace搞定,结果如下图所示:
方法二这里【杰】给了一个稍微复杂的代码,如下所示:
lst=["Redcolor","Orange#","Green","Orange@","White"]char_lst=["#","color","@"]flag=0set_1=set()forlsinlst:forchinchar_lst:ifls.endswith(ch):set_1.add(ls.rstrip(ch).strip())flag=1ifflag==0:set_1.add(ls)else:flag=0new_lis=list(set_1)print(new_lis)
运行结果如下所示:
也是可以满足要求的。
方法三这里【flag != flag】给了一个正则表达式的方法,代码如下所示:
importrelst=["Redcolor","Orange#","Green","Orange@","White"]char_lst=["#","color","@"]s="".join(lst+char_lst)dct={i:1foriinre.compile(r"([A-Z][a-z]+)").findall(s)}lis=list(dct.keys())print(lis)
运行结果如下所示:
方法四这里【瑜亮老师】又给了一个集合方法,代码如下所示:
lst=["Redcolor","Orange#","Green","Orange@","White"]char_lst=["#","color","@"]res1={iforiinlstifchar_lst[0]notiniandchar_lst[1]notiniandchar_lst[2]notini}res2={i.strip(j).strip()foriinlstforjinchar_lstifjini}res1.update(res2)res=list(res1)print(res)
运行结果如下所示:
方法五这里【瑜亮老师】基于【flag != flag】大佬的代码,略作修改,字典推导式改成集合推导式,又给了一个方法,代码如下所示:
importrelst=["Redcolor","Orange#","Green","Orange@","White"]char_lst=["#","color","@"]s="".join(lst+char_lst)st={iforiinre.compile(r"([A-Z][a-z]+)").findall(s)}lis=list(st)print(lis)
运行结果如下所示:
方法六这里【瑜亮老师】基于嵌套for循环+break版,又给了一个方法,代码如下所示:
lst=["Redcolor","Orange#","Green","Orange@","White"]char_lst=["#","color","@"]st=[]foriinlst[:]:forjinchar_lst:if""ini:st.append(i[:i.find("")])breakelifjini:st.append(i[:i.find(j)])breakelse:st.append(i)breakres=list(set(st))print(res)
运行结果如下所示:
方法七这里【flag != flag】又给了一个方法,代码如下所示:
lst=["Redcolor","Orange#","Green","Orange@","White"]char_lst=["#","color","@"]foriinchar_lst:forindex,iteminenumerate(lst):ifiinitem:new_item=item.replace(i,"").strip()lst[index]=new_itemiflst.count(new_item)>1:dellst[lst.index(new_item)]print(lst)
结果如下图所示:
后来【瑜亮老师】针对这个代码,稍微优化了下,代码如下所示:
lst=["Redcolor","Orange#","Green","Orange@","White"]char_lst=["#","color","@"]foriinchar_lst:forindex,iteminenumerate(lst):ifiinitem:new_item=item.replace(i,"").strip()ifnew_itemnotinlst:lst[index]=new_itemelse:dellst[lst.index(item)]print(lst)
结果如下图所示:
方法很多,有的方法可能直接跳出了题意之外,硬生生的给解决了,不过问题不大!
如果有遇到问题,随时联系我解决,欢迎加入我的Python学习交流群。
三、总结大家好,我是Python进阶者。这篇文章主要盘点了一道Python列表中字符串替换的问题,文中针对该问题给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
最后感谢粉丝【Chloe】提问,感谢【瑜亮老师】、【杰】、【flag != flag】给出的思路和代码解析,感谢【dcpeng】、【此类生物】等人参与学习交流。
小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。
-------------------End-------------------
往期精彩文章推荐:
Python网络爬虫逆向之frida rpc转发案例(x物)
在xpath匹配li标签的时候跳过第一个li标签,匹配剩下的li标签表达式怎么写?
盘点两种使用Python网络爬虫实现东方财富网分时数据抓取方法
手把手教你使用Python网络爬虫和邮件发送来定制你的每日一文
欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
/今日留言主题/
随便说一两句吧~~
相关阅读
-
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... -
NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... -
环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... -
重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... -
简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... -
焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...