我正在学习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,那么它们是相同的数字-对吗?第一次使用此网站,所以我对标准的问题协议不熟悉(尽管我确实阅读了规则)。

如果很长很抱歉,感谢任何帮助我的人!

最佳答案

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()的输入,意味着一旦确定答案,它们就会停止。但是,数据可能不是最佳顺序,无法最大程度地减少测试次数。

关于python - 在python中查找不同的对及其产品,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41752725/

10-16 08:36