Как ничего не вернуть или пропустить определенный элемент в списке, если он не странный - PullRequest
0 голосов
/ 20 января 2019

Я очень плохо знаком с Python, и у меня возникают проблемы с преобразованием моих мыслей в синтаксис.

Это проблема, которую мне задали:

Учитывая массив 1 на n, напишите функцию odd (a), чтобы вернуть новый массив, содержащий элементы, индекс которых является нечетным числом.

a = np.array([1, 3, 4, 2, 5, 3, 8, 1])

odd(a) = array([3, 2, 3, 1])

и это то, что у меня пока есть:

def odd(a):
    return ['' if x%2==0 else x for x in a]

Это, однако, возвращает:

[1, 3, '', '', 5, 3, '', 1]

Как мне просто пропустить этот элемент?

Ответы [ 3 ]

0 голосов
/ 20 января 2019
import numpy as np

odd = lambda a: [a[i] for i in range(len(a)) if i%2]

a = np.array([1, 3, 4, 2, 5, 3, 8, 1])
print(odd(a)) # -> [3, 2, 3, 1]
0 голосов
/ 20 января 2019

Используйте срез и шаг (см. Ссылку здесь: Понимание обозначения среза ):

def odd(a):
  return a[1::2]

#=> [3 2 3 1]
0 голосов
/ 20 января 2019

Используйте enumerate для итерации по элементу и его индексу одновременно и с условием index % 2 для извлечения всех нечетных значений позиции:

import numpy as np

def odd(a):
    return [x for i, x in enumerate(a) if i % 2]

a = np.array([1, 3, 4, 2, 5, 3, 8, 1])
print(odd(a))

# [3, 2, 3, 1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...