-3

因此,例如,假设我有一个类似的列表

List1 = [5, 6, 7, 1, 40]

而且我希望解决方案仅在我们正在查看的列表中的值是列表中所有其他成员的 5 倍时才返回 true。因此,如果我们正在查看第一项 5,则解决方案应该返回 false(即使它比 1 大 5 倍,它也不会与其他成员进行比较),并且在查看最后一个成员 40 时应该返回 true。在python中,我写了类似的东西:

for i in range(len(list1)):
    for j in range(i + 1, len(list1)):
        if i >= (j*5):
            return True
        else:
            return False

但我不认为这是一个很好的解决方案。我知道这不应该那么难,但我正在经历一些让我很难做到的健康问题。任何想法或帮助将不胜感激!

4

3 回答 3

0

以下将为您提供List1满足条件的每个元素的 True/False 值列表。

[all(List1[i] > List1[j] * 5 for j in range(len(List1)) if i != j)
 for i in range(len(List1))]
于 2019-06-22T20:26:00.660 回答
0

尝试这个:

def check(lst, value_index):
    return lst[value_index] >= 5 * max(q for e, q in enumerate(lst) if e != value_index)
于 2019-06-22T20:26:36.647 回答
0

您正在比较 i 和 j 而不是比较列表值,并且在将 list1[i] 值与所有其他 list1[j] 值进行比较之前返回 true。检查所有 j 值的条件,并使用 count 检查该值是否大于所有其他值。

count = 0
for i in range(len(list1)):
    for j in range(i + 1, len(list1)):
        if (list1[i] >= (list1[j]*5)):
            count = count + 1
    if(count == len(list1) - 1):
            return True
return False    
于 2019-06-22T20:29:35.210 回答