2017-01-19 2 views
1

Я изучаю python, и я не ожидаю ответа. Мне просто нужна помощь.Поиск различных пар и их продуктов в python

Я дал несколько списков, что из списков мне нужно проверить, чтобы убедиться, что:

а) Это не пустой список

б) Он имеет более чем одно целое число в пределах списка

c) Проверьте, имеют ли целые числа в списке четное значение продукта или значение нечетного продукта, проверяя отдельные пары. Например, list1 = [1,2,3]. Это вернет False, потому что продукт четный. list2 = [3,2,3] вернет True, потому что произведение двух нечетных пар является нечетным.

Вот некоторые из моих идей:

а) Чтобы проверить, если это пустой список, который бы:

if not myList: 
    return(False) 

или

if myList != []: 
    return(True) 

б)

if myList != 1: 
    return(True) 

или

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

с)

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, то они имеют одинаковое число-право? Первый пользователь этого сайта, поэтому я не знаком со стандартным протоколом вопросов (я действительно читал правила).

Извините, если это долго и благодаря тому, кто помогает мне!

+0

Нужно, чтобы наиболее идиоматический и «питонический» из всех вариантов, которые вы показали выше, «если не lst». –

+1

'потому что произведение двух нечетных пар нечетное. Я не совсем понимаю логику, требуемую здесь! –

+0

Я также не понимаю, c). Вы имеете в виду проверку того, является ли произведение каждого целого в списке четным или нечетным? –

ответ

1

а) Это не пустой список

Ваш пустой чек контейнер кажется нормально (просто падение скобки)

if not myList: 
    return False 

б) Он имеет более чем одно целое число в пределах список

Это не работает, это проверка числа n Ot проверки длины списка:

if myList != 1: 
    return(True) 

вы можете вместо этого хотите (который также заботится о случае «а»):

if len(myList) < 2: 
    return False 

) Проверьте, если целые числа в пределах списка есть еще значение продукта или значение нечетного продукта, проверяя отдельные пары.

Это один сложно, как ваше объяснение кажется несовместимым с примерами:

Например песни1 = [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() означает это прекратится, как только ответ может быть определена. Однако данные могут быть не в оптимальном порядке, чтобы свести к минимуму количество тестов.

Смежные вопросы