如何在python中替换单个列表中的多个数字



我有一个列表,比如

a= [1,2,3,4,5,7,1,2,3,1]

我想把a中的1替换为10。
所以新列表应该是

[10,2,3,4,5,7,10,2,3,10]

大多数Python方法都是使用列表理解:

a = [1, 2, 3, 4, 5, 7, 1, 2, 3, 1, ]
a = [10 if number == 1 else number for number in a]

如果你必须更换多个号码,你可以使用映射:

a = [1, 2, 3, 4, 5, 7, 1, 2, 3, 1, ]
mapping = {
# old: new
1: 10,
2: 20,
}
a = [mapping.get(number, number) for number in a]

最后一行将搜索映射中的数字,如果找到,将使用替换,如果不是原始值。

您可以这样做:

a= [1,2,3,4,5,7,1,2,3,1]
for i,v in enumerate(a):
if v == 1:
a[i] = 10
print(a)

输出:

[10,2,3,4,5,7,10,2,3,10]

使用列表理解:

a = [1,2,3,4,5,7,1,2,3,1]
b = [10 if v == 1 else v for v in a]
print(b)

输出:

[10, 2, 3, 4, 5, 7, 10, 2, 3, 10]

除了@Vaibhav答案,您还可以构建一个具有列表理解的新列表:

a_modified = [10 if x == 1 else x for x in a]

使用列表理解,您可以非常容易地进行任何列表编辑。在这种情况下,你可以做:

a = [x if x!=1 else 10 for x in a]

如果您正在从数据集中读取列表。您可以直接处理数据帧,如下所示。

for i in range(len(df)):
if(df.loc[i,'column'] == 1):
df.at[i, 'column'] = 10
Continue;

用10 替换1

a = [1,2,3,4,5,7,1,2,3,1]
a1_data = []
for i in a:
if i == 1:
i = 10
a1_data.append(i)
else:
a1_data.append(i)
print(a1_data)

最新更新