python - 替换列表中的项目
问题描述
我正在尝试根据子字符串匹配替换列表中的项目
我有以下清单
x = ['D-cat', 'cat', 'C-Rabbit', 'Rabbit', 'R-rat', 'S-rat', 'L-cat']
如果有两个项目,例如 D-cat 和 cat,我想用不带前缀的项目替换带前缀的项目。即 D-cat 必须替换为 cat。同样,我想用 xxx 替换所有前缀 xxx。
我厌倦了以下使用replace
.
x = [animal.replace('D-cat','cat') for animal in x]
预期结果:
x = ['cat', 'cat', 'Rabbit', 'Rabbit', 'R-rat', 'S-rat', 'cat']
我不确定如何对所有项目实施这一点。
我想请教一些建议。
编辑:测试用例
x =['C-Rab 6-bit', 'Rab 6-bit']
预期输出:
x=['Rab 6-bit', 'Rab 6-bit']
解决方案
你可以用基本的for循环来做到这一点:
mylist = ['D-cat', 'cat', 'C-Rabbit', 'Rabbit', 'R-rat', 'S-rat', 'L-cat']
for i in range(len(mylist)):
for j in range(len(mylist)):
if mylist[j] in mylist[i]:
mylist[i] = mylist[j]
print (mylist)
输出:
['cat', 'cat', 'Rabbit', 'Rabbit', 'R-rat', 'S-rat', 'cat']
编辑:测试用例
mylist = ['C-Rab 6-bit', 'Rab 6-bit']
ouput >> ['Rab 6-bit', 'Rab 6-bit']
推荐阅读
- python - open3D中的RGB颜色问题
- javascript - 如何解决 TrackingPage.html:24 ERROR TypeError: Cannot read property 'unsubscribe' of undefined?
- c++ - 当您通过多个进程映射同一个大文件时会发生什么?
- javascript - 比较两个数组并将缺失元素加 0
- c# - 实体“学生”需要定义一个主键
- python-3.x - 从 readlines() 输出到列表中
- simpleitk - BSplineTransform.GetInverse() 抛出 sitk::ERROR: Unable to create inverse
- javascript - 在material-ui网格中自定义行间距的最佳方法是什么?
- c# - 错误对象不包含带 1 个参数的构造函数
- flutter - 如何从另一个 StatefulWidget 更新 StatefulWidget 页面?