Список значений из одного в другой список - PullRequest
0 голосов
/ 06 февраля 2011

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

L1 = [a,b,c]
L2 = [1,2,3]

Теперь я хочу заменить значения от L2 до L1, став L1 = [1,2,3]

Теперь самое интересное

длина L2 всегда равна количеству уникальных предметов в L1 например.

L2 = [1,2,3,4,5]
than
L1 = [a,b,c,d,e]
or
L2 = [1,2]
than
L1 = [a,b]

но это еще не все ... Длина L1 может быть разной по длине и неупорядоченной после длины L2 ..:

например:

L2 = [1,2]
than L1 might be
L1 = [a,b,a,a,a,b] #(first two items are always different)
or
L2 = [1,2,3,4,5]
than L1 might be
L1 = [a,b,c,d,e,a,a,e,e,b,b] #(first 5 items are different) 

Надеюсь, я объяснил это достаточно хорошо. Если есть какие-либо вопросы, не стесняйтесь спрашивать!

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

спасибо заранее

Джейден

_edit __

L1 и L2 созданы рано в моем сценарии. Теперь я как-то хочу соединить элементы в обоих списках.

L1[0] = L2[0]
L1[1] = L2[1]

и так далее. для длины L2, но это должно происходить для каждого элемента в L1, так как L1 всегда длиннее, чем L2. Вот в чем проблема.

Надеюсь, это поможет,

Джейден

Ответы [ 2 ]

2 голосов
/ 06 февраля 2011

Вы можете заменить кусочки списка.

>>> L1 = ['a','b','c','d','e','a','a','e','e','b','b']
>>> L2 = [1,2,3,4,5]
>>> length = len(L2)
>>> L1[:length] = L2[:length]
>>> print(L1)
[1, 2, 3, 4, 5, 'a', 'a', 'e', 'e', 'b', 'b']

На всякий случай я неправильно истолковал то, что вы хотели, и хочу заменить каждый экземпляр 'a' на 1, 'b' на 2и т. д., это работает:

>>> L1 = ['a','b','c','d','e','a','a','e','e','b','b']
>>> L2 = [1,2,3,4,5]
>>> mapping = dict(zip(L1, L2))
>>> for i, k in enumerate(L1[:]):
        L1[i] = mapping[k]
>>> print(L1)
[1, 2, 3, 4, 5, 1, 1, 5, 5, 2, 2]
0 голосов
/ 06 февраля 2011

Вы можете создать словарь, содержащий сопоставления значений от l1 до l2, {'a': 1, 'b': 2, ....}, затем выполнить итерацию по l1 и заменить значения.

d = dict ((l1[idx],y) for idx, y in enumerate(l2))
l1 = [d[x] for x in l1]

РЕДАКТИРОВАТЬ: Для лучшего понимания вашего вопроса было бы полезно опубликовать ожидаемые результаты для приведенных примеров.

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