在python中查找不同的对及其产品

时间:2017-01-19 22:14:32

标签: python

我正在学习python,我不希望得到答案。我真的需要帮助。

我从列表中获得了多个列表,我需要检查以确保:

a)它不是一个空列表

b)列表中有多个整数

c)通过检查不同的对,检查列表中的整数是否具有偶数乘积值或奇数乘积值。例如list1 = [1,2,3]。这将返回False,因为产品是偶数。 list2 = [3,2,3]将返回True,因为两个奇数对的乘积是奇数。

这些是我的一些想法:

a)要检查它是否为空列表,请键入:

if not myList: 
    return(False) 

if myList != []: 
    return(True)

b)

if myList != 1: 
    return(True) 

if int in myList < 0 and if int in myList > 2: 
    return(False)

c)

if len(myList) % 2 == 0: 
    return(False) 

因为如果有两个偶数双,那么它甚至会返回任何一种方式。我只是想找到奇怪的产品。

   if len(myList) % 2 != 0:
       for i in myList:
          if i % i == 1:
              return(True)
          else:
              return(False)

我应该测试一下,但实际上我只是想出来写这个。找对子很难。

我认为如果最终结果为1那么它们是相同的数字 - 对吗?这个网站的第一次使用者,所以我不熟悉问题的标准协议(虽然我确实阅读了规则)。

对不起,如果这很长,感谢无论谁帮助我!

1 个答案:

答案 0 :(得分:1)

  

a)它不是一个空列表

您的空容器检查似乎没问题(只需删除括号)

if not myList: 
    return False
  

b)列表中有多个整数

这不起作用,这是一个数字检查,而不是列表长度检查:

if myList != 1: 
    return(True)

你可能想要(也照顾案例'a'):

if len(myList) < 2:
    return False
  

c)检查列表中的整数是否具有偶数产品值或   通过检查不同的对来产生奇怪的产品价值。

这个很棘手,因为你的解释似乎与你的例子不一致:

  

例如list1 = [1,2,3]。这将返回False,因为   产品是均匀的。 list2 = [3,2,3]将返回True,因为该产品   这两个奇数对是奇数。

两个列表都有一个偶数产品,但您返回一个True,另一个返回False

你的后续解释似乎意味着你想要确定奇偶校验而不是乘以通过注意所有奇数元素=奇数乘积(True)和任何偶数元素=偶数乘积(False)导致两个可能的谓词:

def are_all_odd(myList):  # odd product True; even product False
    return all(element % 2 for element in myList)

def is_any_even(myList):  # even product True; odd product False
    return any(element % 2 == 0 for element in myList)

但模数运算符%是除法,它与乘法一样昂贵。为了避免这种情况,我们可以这样做:

def are_all_odd(myList):  # odd product True; even product False
    return all(element & 1 for element in myList)

def is_any_even(myList):  # even product True; odd product False
    return any(~element & 1 for element in myList)

使用生成器作为any()all()的输入意味着只要确定答案,这些就会停止。但是,数据可能不是最佳顺序,以尽量减少测试次数。