Как объединить массивы с помощью кондиционирования в Python? - PullRequest
0 голосов
/ 05 марта 2020

У меня есть массивы 'a', 'b' и 'c'. Я хочу создать массив 'd', используя concatenate() и добавить a, b или c, если они существуют.

d = concatenate([a (if a exists),b (if b exists),c (if c exists)])

Ответы [ 4 ]

1 голос
/ 05 марта 2020

Обычно у вас все переменные существуют, даже если они пустые, поэтому в другом коде вы решаете, создавать ли переменную или нет, вместо этого инициализируйте ее как [], прежде чем принимать обычное решение о том, помещать ли переменную. значение в этом или нет, я считаю, что это стандартная практика для Python

Это означает, что сцепление будет просто работать

0 голосов
/ 05 марта 2020

Если у вас есть два массива,

>>> x
array([1, 2, 3])
>>> y
array([4, 5, 6])

конкатенация может быть выполнена несколькими способами. Например,

>>> [*x, *y]
>>> np.concatenate((x, y))

Выход [1, 2, 3, 4, 5, 6].

Как только вы попытаетесь добавить 'z', который не определен, вы получите 'NameError'

>>> [*x, *y, *z]
NameError: name 'z' is not defined

Поэтому убедитесь, что вы сначала определили каждую использованную переменную, или нет, она будет остаются пустыми.

>>> z
array([])
>>> [*x, *y, *z]
[1, 2, 3, 4, 5, 6]
0 голосов
/ 05 марта 2020

, если ваши массивы a, b, c относятся к типу списка, следующий код работает, потому что пустой список оценивается по умолчанию Нет в тесте на истинность. Иначе измените лямбду соответственно

d=list(filter(lambda x:x,[a+b+c]))

Если есть списка a, b, c становится пустым, пропускается

0 голосов
/ 05 марта 2020

Попробуйте это. Если вы хотите, чтобы ваш d был списком списка.

a = []
b = ["B", "C"]
c = ["A", "C", "D"]

def concatenate(*args):
    return [item for item in args if item]

print(concatenate(a,b,c))

ВЫХОД:

[['B', 'C'], ['A', 'C', 'D']]

Но если вам нужны только значения a, b, c в d:

a = []
b = ["B", "C"]
c = ["A", "C", "D"]

def concatenate(*args):
    return [item for arr in args for item in arr] 

print(concatenate(a,b,c))

ВЫХОД:

['B', 'C', 'A', 'C', 'D']

*args для вашей функции, позволяющей принимать несколько аргументов / списков.

ВХОД:

a = []
b = ["B", "C"]
c = ["A", "C", "D"]
d = ["X", "Z", "E"]
e = ["J", "H", "G"]
f = ["K", "L", "D"]

concatenate(a,b,c,d,e,f)

ВЫХОД:

['B', 'C', 'A', 'C', 'D', 'X', 'Z', 'E', 'J', 'H', 'G', 'K', 'L', 'D']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...