Flask接口签名sign原理与实例代码浅析
295
2022-08-25
# yyds干货盘点 # 盘点一个列表中字符串替换的基础题目
大家好,我是Python进阶者。
一、前言
前几天在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)
方法二
这里【杰】给了一个稍微复杂的代码,如下所示:
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 relst = ['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 relst = ['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)
结果如下图所示:
方法很多,有的方法可能直接跳出了题意之外,硬生生的给解决了,不过问题不大!
如果有遇到问题,随时联系我解决,欢迎加入我的Python学习交流群。
三、总结
大家好,我是Python进阶者。这篇文章主要盘点了一道Python列表中字符串替换的问题,文中针对该问题给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
最后感谢粉丝【Chloe】提问,感谢【瑜亮老师】、【杰】、【flag != flag】给出的思路和代码解析,感谢【dcpeng】、【此类生物】等人参与学习交流。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~