2011-02-05 2 views
0

Я почти новичок в 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. Это проблема.

Надеется, что это помогает,

Джейден

+0

У меня возникли проблемы с пониманием вашего описания. Каков результат, каков вход? Не изменяйте значение/значение переменных, т. Е. Вместо L1 = complex_operation (L1, L2) объясните это как L3 = complex_operation (L1, L2). Кроме того, воздержитесь от использования сокращений, таких как «---->» или «или:». Я понятия не имею, что означает любой символ. – phihag

+0

извините за беспорядок! – jaden

ответ

2

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

>>> 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

СПАСИБО ВАМ ОЧЕНЬ ОЧЕНЬ ОЧЕНЬ !!!! Вторая часть кода - именно то, что я пытался собраться! Я не могу вас поблагодарить. Наконец я могу заснуть .... и спать;) – jaden

0

Вы можете создать словарь, содержащий отображения значений от 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] 

EDIT: Для лучшего понимания вашего вопроса было бы полезно опубликовать ожидаемые результаты для данных примеров.

+0

Спасибо за ваши усилия, но второй кусок кода от jeff был именно тем, что я искал! thx за попытку помочь. Джейден – jaden

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