python 仅修改列表中一个元素的值

insrf1ej  于 2023-03-07  发布在  Python
关注(0)|答案(3)|浏览(150)

我只想把一个列表中的一个元素从字符串转换成浮点型。
名单如下:

list_1 = ['0.49', '0.54', '0.54', '0.55', '0.55', '0.54', '0.55', '0.55', '0.54']

我想要的输出是:

list_2= ['0.49', 0.54, '0.54', '0.55', '0.55', '0.54', '0.55', '0.55', '0.54']

按代码:

list_1 = ['0.49', '0.54', '0.54', '0.55', '0.55', '0.54', '0.55', '0.55', '0.54']
list_2 = []
for element in list_1:
   if element == list_1[2]:
         list_2.append(float(element))
   else:
       list_2.append(element)
print(list_2)

输出为;

list_2= ['0.49', 0.54, 0.54, '0.55', '0.55', 0.54, '0.55', '0.55', 0.54]
flseospp

flseospp1#

只需复制原始列表并修改索引为1的元素:

list_2 = [*list_1]
list_2[1] = float(list_2[1])

也可以使用带有enumerate的列表解析。

list_2 = [float(x) if i == 1 else x for i, x in enumerate(list_1)]
hkmswyz6

hkmswyz62#

或者您可以尝试设置一个 flag 来标记已完成的操作。如下所示:(这是按照你的思维逻辑)
注意-这不是基于0.54处于 * 固定 * 位置的假设,可能更 * 灵活 *。

list_2 = []
converted = False         # flag to check

for element in list_1:
    if element == '0.54' and not converted:
        list_2.append(float(element))
        converted = True
    else:
        list_2.append(element)

print(list_2)
cigdeys3

cigdeys33#

如果要转换的项目基于位置,则可以直接指定转换后的值:

list_2 = list_1.copy()
list_2[1] = float(list_2[1])

如果要转换给定值的第一个匹配项,可以使用index()方法查找位置

list_2 = list_1.copy()
if '0.54' in list_2:
   index = list_2.index('0.54')
   list_2[index] = float(list_2[index])

你可以使用字典来转换解析中的第一个示例,方法是使用.pop()来移除第一次使用后的键:

convert = {'0.54':float }

list_2 = [convert.pop(s,str)(s) for s in list_1]

使用这样的字典,您可以对多个值执行一次性转换。例如,如果您希望转换每个字符串值的第一个示例,您可以使用值本身初始化字典:

convert = dict.fromkeys(list_1,float)

list_2 = [convert.pop(s,str)(s) for s in list_1]

[0.49, 0.54, '0.54', 0.55, '0.55', '0.54', '0.55', '0.55', '0.54']

相关问题