我有一个数组,让我们这样说:
arr = [“60”,“DD”,“81”,“01”,“01”,“29”,“B8”,“1B”,“00”,“ 30" , “2C”,“46”,“00”,“0A”,“81”,“02”,“0D”,“25”,“00”,“37”,“41” , “31”,“00”,“C2”,“7F”,“06”,“00”,“17”,“94”,“1A”,“00”,“48”, “06”,“05”,“00”,“5C”,“7F”,“3E”,“87”,“FF”,“0F”,“B8”,“0A”, “38”,“0C”]
我正在尝试将"81", "01"
和"81"
的{{1}}替换为"81", "02"
。我试过但它没有适当地替换这些值。这是我的代码。
"82"
如果有人可以帮助我解决这个问题,那将会很棒。谢谢。
答案 0 :(得分:3)
鉴于您的两个字符串,您可以将列表转换为字符串并使用str.replace
进行替换,然后拆分以返回转换后的列表:
s = ' '.join(arr)
s = s.replace('81 01', '81')
s = s.replace('81 02', '82')
print s.split()
# ['60', 'DD', '81', '01', '29', 'B8', '1B', '00', '30', '2C', '46', '00', '0A', '82', '0D', '25', '00', '37', '41', '31', '00', 'C2', '7F', '06', '00', '17', '94', '1A', '00', '48', '06', '05', '00', '5C', '7F', '3E', '87', 'FF', '0F', 'B8', '0A', '38', '0C']
效率不高但qiute简洁易读。
答案 1 :(得分:0)
对于仅与列表一起使用的方法,并将推广到其他类型的值:
solns = [arr[0]]
for i, entry in enumerate(arr[:-1]):
if entry == '81':
if arr[i+1] == '02':
solns[-1] = '82'
elif not arr[i+1] == '01':
solns.append(arr[i+1])
else:
solns.append(arr[i+1])
或者,如果您愿意:
solns = [arr[0]]
for i, entry in enumerate(arr[:-1]):
if entry == '81':
if arr[i+1] == '02':
solns[-1] = '82'
continue
elif arr[i+1] == '01':
continue
solns.append(arr[i+1])