Python однострочное выражение для - PullRequest
17 голосов
/ 09 октября 2009

Я не уверен, нужна ли мне лямбда или что-то еще. Но все же мне нужно следующее:

У меня есть array = [1,2,3,4,5]. Мне нужно поместить этот массив, например, в другой массив. Но напишите все это в одной строке.

for item in array:
    array2.append(item)

Я знаю, что это вполне возможно, чтобы перебрать элементы и сделать их однострочными. Но поиск в Google и чтение руководств не очень помогли мне ... если вы можете просто дать мне подсказку или назвать эту вещь, чтобы я мог найти, что это, я был бы очень признателен.

Обновление: скажем так: array2 = SOME FANCY EXPRESSION THAT IS GOING TO GET ALL THE DATA FROM THE FIRST ONE

(пример НЕ реален. Я просто пытаюсь перебрать разные порции данных, но это лучшее, что я мог придумать)

Ответы [ 6 ]

42 голосов
/ 09 октября 2009

Ключевое слово, которое вы ищете: список понимания :

>>> x = [1, 2, 3, 4, 5]
>>> y = [2*a for a in x if a % 2 == 1]
>>> print(y)
[2, 6, 10]
9 голосов
/ 09 октября 2009
for item in array: array2.append (item)

Или, в данном случае:

array2 += array
1 голос
/ 09 октября 2009

Даже array2.extend(array1) будет работать.

1 голос
/ 09 октября 2009

Если вам действительно нужно только добавить элементы из одного массива в другой, оператор '+' уже перегружен для этого, кстати:

a1 = [1,2,3,4,5]
a2 = [6,7,8,9]
a1 + a2
--> [1, 2, 3, 4, 5, 6, 7, 8, 9]
1 голос
/ 09 октября 2009

Если вы пытаетесь скопировать массив:

array2 = array[:]
0 голосов
/ 16 мая 2018

Используя элементы из списка 'A', создайте новый список 'B' с элементами, которые меньше 10

Вариант 1:

A = [1, 1, 2, 3, 5, 8, 13, 4, 21, 34, 9, 55, 89]

B = []
for i in range(len(A)):
    if A[i] < 10:
        B.append(A[i])
print(B)

Вариант 2:

A = [1, 1, 2, 3, 5, 8, 13, 4, 21, 34, 9, 55, 89]

B = [A[i] for i in range(len(A)) if A[i] < 10]
print(B)

Результат: [1, 1, 2, 3, 5, 8, 4, 9]

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