Python 比较并乘以列表中的元素

Python 比较并乘以列表中的元素,python,arrays,list,Python,Arrays,List,我试图在算法中编写一个函数: 检查列表中的所有元素是否不同 将列表中除零以外的所有元素相乘 但是我找不到一种方法来比较一个列表中的所有元素,你知道吗 谢谢 PS:我使用arr=np.random.randint(10,size=a)创建一个随机列表 编辑: 更准确地说,我试图检查,在一个numpy数组中,更准确地说,所有的元素是相同的还是不同的,如果它们不同,它会返回True。 此外,完成后,将数组中除零以外的所有元素相乘 例如: 如果我有一个数组[4,2,6,8,9,0],算法告诉我首先返

我试图在算法中编写一个函数:

  • 检查列表中的所有元素是否不同
  • 将列表中除零以外的所有元素相乘
但是我找不到一种方法来比较一个列表中的所有元素,你知道吗

谢谢

PS:我使用
arr=np.random.randint(10,size=a)
创建一个随机列表

编辑:

更准确地说,我试图检查,在一个numpy数组中,更准确地说,所有的元素是相同的还是不同的,如果它们不同,它会返回True。 此外,完成后,将数组中除零以外的所有元素相乘 例如: 如果我有一个数组
[4,2,6,8,9,0]
,算法告诉我首先返回
True
,因为所有元素都不同,然后它将它们相乘
4*2*6*8*9
,除了可以使用的0

下面的代码段检查数组中的所有元素是否唯一(彼此不同),如果是,它将用factor
factor
乘以非零值:

import numpy as np

factor = 5

if np.unique(arr).size == arr.size:
    arr[arr != 0] = arr[arr != 0] * factor

若要检查列表中的所有元素是否不同,可以将列表转换为一个集合,以删除重复项,并将集合的长度与原始列表进行比较。如果集合的长度不同于列表的长度,则存在重复项

x = np.random.randint(10, size=10)
len(set(x)) == len(x)
要将除0以外的所有值相乘,可以执行列表理解以删除0,并使用np.prod将新列表中的值相乘

np.prod([i for i in x if i != 0])
例如:

x = np.random.randint(10, size=10)
if len(set(x)) == len(x):
    print(np.prod([i for i in x if i != 0]))
else:
    print("array is not unique")

您可以使用集合查找唯一的编号。我已经包括了一个代码来解决您的问题

import numpy as np
from collections import Counter


a = 5
arr = np.random.randint(10, size=a)


result = 1 #Variable that will store the product
flag = 0 #The counter

#Check if all the numbers are unique
for i in Counter(arr):
    if Counter(arr)[i] > 1:
        flag = 1
        break

#Convert the dictionary into a list
l = [i for i in Counter(arr)]

#Return the product of all the numbers in the list except 0
if flag == 0:
    for i in l:
        if i != 0:
            result = result * i
else:
    print("The numbers are not unique")


只是为了好玩,这里有一句话:

arr = np.array([1, 2, 3, 4, 0])

np.prod(arr[arr!=0]) if np.unique(arr).size == arr.size else False

>>> 24

如果数组是
[1,2,3,4,4]
则结果是
False

len(arr)==len(set(arr))
?请注意,
arr
对象严格来说不是一个
列表,而是一个
ndarray
。为什么不将零相乘(零乘以零)?为什么零是复数(我们没有事先检查所有元素是否不同吗)?这不是我想要做的。我试图检查,更精确地说,在一个numpy数组中,所有的元素是相同的还是不同的,如果它们不同,它会返回True。此外,一旦完成,将数组中除zerosWell之外的所有元素相乘,我想您必须给出一个更精确的问题。is not
np.unique()
仅返回数组中唯一元素的值吗?而不是检查所有元素是否不同