在 Python 中,字符串(字节或 unicode)是不可变的。这意味着你不能改变它,你只能让变量引用一个新的值。
列表是一个可变对象,因此您可以更改其各个元素。
你可以在这里做:
for index, i in enumerate(list1):
if i[2:3] == '0':
list1[index] = i[:2] + i[2:].replace('0', '')
(你不能在整个字符串中替换'0',因为你想保留最初的那个)
坚持可变性:上面的代码修改 list1,而这个:
list1 = [ i[:2] + i[2:].replace('0', '') for i in list1 ]
将创建一个新列表。
看看这两个示例代码:
list1 = ['0x001', '0x002', '0x0a3']
list2 = list1
for index, i in enumerate(list1):
if i[2:3] == '0':
list1[index] = i[:2] + i[2:].replace('0', '')
print(list1, list2)
输出是:
['0x1', '0x2', '0xa3'] ['0x1', '0x2', '0xa3']
因为列表已经修改,所以list2指向修改后的列表。但是随着
list1 = ['0x001', '0x002', '0x0a3']
list2 = list1
list1 = [ i[:2] + i[2:].replace('0', '') for i in list1 ]
print(list1, list2)
输出是:
['0x1', '0x2', '0xa3'] ['0x001', '0x002', '0x0a3']
因为list1 是一个新列表,而list2 仍然引用原始列表。