Python列表中的位置
我试图为每个元素与列表中的所有其他元素之间的操作编写一个代码,但不是与列表本身。下面是代码Python列表中的位置,python,Python,我试图为每个元素与列表中的所有其他元素之间的操作编写一个代码,但不是与列表本身。下面是代码 list = [10,20,30,30,40,50,50,50,60,70]; for i in list: sum=i; for j in list: if list.index(i) != list.index(j): s=(50-((j-i)/2))*0.13;
list = [10,20,30,30,40,50,50,50,60,70];
for i in list:
sum=i;
for j in list:
if list.index(i) != list.index(j):
s=(50-((j-i)/2))*0.13;
sum+=s;
print("score of %d is %f"%(i,sum));
但代码仍然不起作用。它不满足位置的
if
条件 您可以使用枚举
获取索引。这可能会使您达到以下目的:
lis = [10, 20, 30, 30, 40, 50, 50, 50, 60, 70]
for idx1, el1 in enumerate(lis):
sum_ = el1
for idx2, el2 in enumerate(lis):
if idx1 != idx2:
sum_ += (50 - (el2 - el1)/2) * 0.13
print("score of %d is %f"%(idx1, sum_))
请添加预期输出,因为问题对我来说没有任何意义…30重复。因此,在重复的情况下,将排除所有重复项。这是预期的吗?不应排除重复项…i&j不应属于同一位置…例如:位置3中的30应与位置4中的30一起操作,但不应与位置3中的30一起操作输出应为…10的分数为48.67,20的分数为45.23,30的分数为51.78,30的分数为51.78…因此我认为
print()
缩进太远。它应该与idx2的对齐,el2…
的print()
只是用于调试,并显示正在进行的操作。例如,您可以看到,如果两个索引相等(即每个内部循环一次),则总和不会改变。