我正在尝试根据以前的属性更改列表的某些元素。因为我需要分配一个中间变量,所以我认为这不能作为列表理解来完成。以下带有注释的代码是我想要实现的:
for H in header:
if "lower" in H.lower():
pref="lower"
elif "higher" in H.lower():
pref="higher"
if header.count(H) > 1:
# change H inplace
H = pref+H
我想出的最佳解决方案是:
for ii,H in enumerate(header):
if "lower" in H.lower():
pref="lower"
elif "higher" in H.lower():
pref="higher"
if header.count(H) > 1:
header[ii] = pref+H
它不太好用,而且由于索引,我觉得它不像 Python。有一个更好的方法吗?
具体例子:
header = ['LowerLevel','Term','J','UpperLevel','Term','J']
所需的输出:
header = ['LowerLevel','LowerTerm','LowerJ','UpperLevel','UpperTerm','UpperJ']
请注意,我的解决方案都不起作用:前者根本不修改header
,后者只返回
header = ['LowerLevel','LowerTerm','LowerJ','UpperLevel','Term','J']
,因为count
修改后是错误的。