产业新知热门
加国央行再次疯狂加息 月供将暴涨 物价竟会这样变化 无人幸免的购物节“大逃杀” 兼职做自媒体这些天:有人年入五块四,有人时薪一百二 瞄准数亿过敏人群,以过敏数字疗法为切点,杭州数智医掘金新蓝海 武汉大学疑似出现霍乱病例 期货不严格止损是超短线交易失败的根源 ,精细赛道也能走到上市! 预制菜,会有“刺客”吗推荐资讯
让区块链变成人人可用的工具,上海原创Web3.0操作系统是如何诞生的 隐私之变|自我主张时代变革,从构建WEB3.0的ID体系开始 被投资圈盯上,风头超过元宇宙,Web3.0到底是啥? Web3.0,勾勒下一代互联网模样 为什么说中国汽车产业已经真正“支棱”起来了 我在新能源汽车行业打工10年:从月薪2千涨至年薪40万,终于熬出头 对话梅宏院士:数字化转型不是想不想,而是必须转 王兴继续“电商零售梦”:告别社区团购 美团优选变身明日达超市盘点一个列表中字符串替换的基础题目
一、前言
前几天在Python最强王者交流群【Chloe】问了一道
Python
基础的问题,如下图所示。
原始数据如下所示:
lst = ['Red color', 'Orange#', 'Green', 'Orange @', "White"]
char_lst = ['#', 'color', '@']说白了,就是字符串替换。
二、实现过程
方法一
这里【瑜亮老师】给了一个方法,代码如下所示:
lst = ['Red color', 'Orange#', 'Green', 'Orange @', "White"]
char_lst = ['#', 'color', '@']temp = '----'.join(lst)for i in char_lst: temp = temp.replace(i, '')res = temp.split('----')res = list({i.strip() for i in res})print(res)一个
replace
搞定,结果如下图所示:方法二
这里【杰】给了一个稍微复杂的代码,如下所示:
lst = ['Red color', 'Orange#', 'Green', 'Orange @', "White"]
char_lst = ['#', 'color', '@']flag = 0set_1 = set()for ls in lst: for ch in char_lst: if ls.endswith(ch): set_1.add(ls.rstrip(ch).strip()) flag = 1 if flag == 0: set_1.add(ls) else: flag = 0new_lis = list(set_1)print(new_lis)运行结果如下所示:
也是可以满足要求的。
方法三
这里【flag != flag】给了一个正则表达式的方法,代码如下所示:
import re
lst = ['Red color', 'Orange#', 'Green', 'Orange @', "White"]char_lst = ['#', 'color', '@']s = ''.join(lst+char_lst)dct = {i: 1 for i in re.compile(r'([A-Z][a-z]+)').findall(s)}lis = list(dct.keys())print(lis)运行结果如下所示:
方法四
这里【瑜亮老师】又给了一个集合方法,代码如下所示:
lst = ['Red color', 'Orange#', 'Green', 'Orange @', "White"]
char_lst = ['#', 'color', '@']res1 = {i for i in lst if char_lst[0] not in i and char_lst[1] not in i and char_lst[2] not in i}res2 = {i.strip(j).strip() for i in lst for j in char_lst if j in i}res1.update(res2)res = list(res1)print(res)运行结果如下所示:
方法五
这里【瑜亮老师】基于【flag != flag】大佬的代码,略作修改,字典推导式改成集合推导式,又给了一个方法,代码如下所示:
import re
lst = ['Red color', 'Orange#', 'Green', 'Orange @', "White"]char_lst = ['#', 'color', '@']s = ''.join(lst+char_lst)st = {i for i in re.compile(r'([A-Z][a-z]+)').findall(s)}lis = list(st)print(lis)运行结果如下所示:
方法六
这里【瑜亮老师】基于嵌套
for
循环+break
版,又给了一个方法,代码如下所示:lst = ['Red color', 'Orange#', 'Green', 'Orange @', "White"]
char_lst = ['#', 'color', '@']st = []for i in lst[:]: for j in char_lst: if ' ' in i: st.append(i[:i.find(' ')]) break elif j in i: st.append(i[:i.find(j)]) break else: st.append(i) breakres = list(set(st))print(res)运行结果如下所示:
方法七
这里【flag != flag】又给了一个方法,代码如下所示:
lst = ['Redcolor', 'Orange#', 'Green', 'Orange@', "White"]
char_lst = ['#', 'color', '@']for i in char_lst: for index, item in enumerate(lst): if i in item: new_item = item.replace(i, '').strip() lst[index] = new_item if lst.count(new_item) > 1: del lst[lst.index(new_item)]print(lst)结果如下图所示:
后来【瑜亮老师】针对这个代码,稍微优化了下,代码如下所示:
lst = ['Red color', 'Orange#', 'Green', 'Orange @', "White"]
char_lst = ['#', 'color', '@']for i in char_lst: for index, item in enumerate(lst): if i in item: new_item = item.replace(i, '').strip() if new_item not in lst: lst[index] = new_item else: del lst[lst.index(item)]print(lst)结果如下图所示:
方法很多,有的方法可能直接跳出了题意之外,硬生生的给解决了,不过问题不大!
更多相关内容
-
大学老师,从三分钟热度到每天备考复习3小时,感受到坚持像摸鼻子一样简单!
点击上方 蓝字 ,关注我们! 添加云姐微信“yun
-
小米集团急招财务BP,月薪20-35K,14薪,没有中级、注会要求!但必须...
财务工资普遍低,不受重视,工作无法体现价值 ——这是大部分财务人的痛处。 然而有这样一个财务岗...
-
上海中考数学疑似泄题
上海11万中考生,初中四年的努力不容作弊者亵渎。昨天,一年一度的上海中考终于落下帷幕。
-
这届年轻人是真的很喜欢看直播学习!
哈喽,大家好,我是小谷~ 前有网友看 刘畊宏来锻炼身体,现有大家看 董宇辉(新东方直播老师)学英...
-
画家张锐明作品《事事如意图》竞拍成交
由中国文化艺术人才库组织的“虎年全国书画精英作品拍卖会第二十四期”于7月6日在京举行。画家张锐明作...
-
IB全球统考喜报丨德胜学校(国际)两位满分学子专访
编者按 广东顺德德胜学校(国际)建校于2011年,以“尊重、正直、自律、卓越”作为核心价值观,致力
-
议程公布!ZAODX世界肿瘤早筛大会即将召开
ZAODX世界肿瘤早筛大会 聚焦全球早筛前沿技术研发和转化应用,从“世界格局”、“中国探索”、“解...
-
| 2022年最强免费资源,在今天我找到了!!!
不要着急,先来个预告—— 文末有免费福利最近了解到几个学品牌设计的学员现状
-
靠“视频剪辑”做副业,在家月入2万:聪明的人,从不挣辛苦钱!
可能你也发现了,我最近经常在劝大家搞副业赚.钱。这年头想要靠一份sǐ工资活下去,太难了! 全职妈妈:...
-
最新第2版NPDP产品经理考前培训招生简章
新升级培训特色:
推荐阅读