Python 比较并乘以列表中的元素
我试图在算法中编写一个函数:Python 比较并乘以列表中的元素,python,arrays,list,Python,Arrays,List,我试图在算法中编写一个函数: 检查列表中的所有元素是否不同 将列表中除零以外的所有元素相乘 但是我找不到一种方法来比较一个列表中的所有元素,你知道吗 谢谢 PS:我使用arr=np.random.randint(10,size=a)创建一个随机列表 编辑: 更准确地说,我试图检查,在一个numpy数组中,更准确地说,所有的元素是相同的还是不同的,如果它们不同,它会返回True。 此外,完成后,将数组中除零以外的所有元素相乘 例如: 如果我有一个数组[4,2,6,8,9,0],算法告诉我首先返
- 检查列表中的所有元素是否不同
- 将列表中除零以外的所有元素相乘
arr=np.random.randint(10,size=a)
创建一个随机列表
编辑:
更准确地说,我试图检查,在一个numpy数组中,更准确地说,所有的元素是相同的还是不同的,如果它们不同,它会返回True。
此外,完成后,将数组中除零以外的所有元素相乘
例如:
如果我有一个数组[4,2,6,8,9,0]
,算法告诉我首先返回True
,因为所有元素都不同,然后它将它们相乘4*2*6*8*9
,除了可以使用的0
下面的代码段检查数组中的所有元素是否唯一(彼此不同),如果是,它将用factorfactor
乘以非零值:
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 notnp.unique()
仅返回数组中唯一元素的值吗?而不是检查所有元素是否不同