Python 2.7 检查Python列表中的重复项
我实际上希望获得list=[1,1.1,1.2,2] 但是,我的代码给出了我的列表=[1,1.1,1.1,2]Python 2.7 检查Python列表中的重复项,python-2.7,list,duplicates,Python 2.7,List,Duplicates,我实际上希望获得list=[1,1.1,1.2,2] 但是,我的代码给出了我的列表=[1,1.1,1.1,2] 如何在列表中运行另一个循环,将0.1添加到重复的数字中?您可以使用字典来缓存增量: dataset: raw_data = [[1, John, 23, 32], [1, Jane, 10, 20], [1, Max, 90, 70], [2, Harry, 32, 56]] list = [] for i in raw_data: if i[0] in list:
如何在列表中运行另一个循环,将0.1添加到重复的数字中?您可以使用字典来缓存增量:
dataset:
raw_data = [[1, John, 23, 32], [1, Jane, 10, 20], [1, Max, 90, 70], [2, Harry, 32, 56]]
list = []
for i in raw_data:
if i[0] in list:
x = i[0] + 0.1
list.append(x)
else:
list.append(i[0])
编辑:使用将保存循环内的条件。不过,在旁观者眼中,它是否更优雅:
cache = {}
result = []
for i in raw_data:
if i[0] in cache:
cache[i[0]] += 0.1
else:
cache[i[0]] = 1
result.append(cache[i[0]])
您可以使用字典缓存增量:
dataset:
raw_data = [[1, John, 23, 32], [1, Jane, 10, 20], [1, Max, 90, 70], [2, Harry, 32, 56]]
list = []
for i in raw_data:
if i[0] in list:
x = i[0] + 0.1
list.append(x)
else:
list.append(i[0])
编辑:使用将保存循环内的条件。不过,在旁观者眼中,它是否更优雅:
cache = {}
result = []
for i in raw_data:
if i[0] in cache:
cache[i[0]] += 0.1
else:
cache[i[0]] = 1
result.append(cache[i[0]])
我通读了你的代码,但我不太明白你在做什么。然而,这两种代码的输出并不完全正确。输出:
[1,1.1,1.20000000002,1]
@TimOng本质上,我为遇到的每个值保留一个缓存,并在每次遇到值时将其递增0.1
。您看到的结果就是浮点数学固有的不精确性(例如,尝试在python中计算1.1+0.1
)。您可以查看关于将其截断为小数点后一位的解决方案。我通读了您的代码,但我不太明白您在做什么。然而,这两种代码的输出并不完全正确。输出:[1,1.1,1.20000000002,1]
@TimOng本质上,我为遇到的每个值保留一个缓存,并在每次遇到值时将其递增0.1
。您看到的结果就是浮点数学固有的不精确性(例如,尝试在python中计算1.1+0.1
)。您可以查看有关将其截断为小数点后一位的解决方案。