Как мне вставить объединенные элементы двух отдельных списков с одинаковым индексом в другой список? - PullRequest
2 голосов
/ 28 мая 2020

Я создаю алгоритм планирования, используя python. И, похоже, у меня проблема со списками.

Вот проблема:

У меня есть 2 списка: A_list и S_follow.

A_list = [1,2,3,4,5,6,7,8,9,10,11]
S_follow = [[2,3],4,[5,6],8,7,9,8,10,10,11,0]

Теперь я создал другой список, который называется Prece_list

Должно произойти следующее: элементы

Prece_list должны иметь

 Prece_list = 

 [
     [1,[2,3]],
     [2,4],
     [3,[5,6]],
     [4,8],
     [5,7],
     [6,9],
     [7,8],
     [8,10],
     [9,10],
     [10,11],
     [11,0]

]

Следующие данные должны быть вставлены в список.

Как мне это сделать случиться? Как мне создать этот список, не вставляя эти данные вручную? кодировали до сих пор:


# Add Precedence Constraint
Larger_S = []
Prece_list = []

for j in range(0, len(A_list)):
  for s in range(2, max_row+1):
    # convert to activity number
    A_list[s] = S_follow
    Prece_list.append(A_list[s])
    print(Prece_list)
    Larger_S.append(Prece_list)
    print(Larger_S)

Ответы [ 5 ]

1 голос
/ 28 мая 2020

Для этого вы можете использовать map :

map (lambda a,b: [a or 0, b or 0], A_list, S_follow)
1 голос
/ 28 мая 2020

попробуйте это

A_list = [1,2,3,4,5,6,7,8,9,10,11]
S_follow = [[2,3],4,[5,6],8,7,9,8,10,10,11]

Prece_list = []

for i in range(0, len(A_list)):
    temp_list = []
    temp_list.append(A_list[i])


    try:
        temp_list.append(S_follow[i])
    except IndexError as e:
        temp_list.append(0)
    Prece_list.append(temp_list)
print(Prece_list)   
0 голосов
/ 28 мая 2020

Это задание для перечисления и понимания списка, например:

Prece_list = [[v, S_follow[i]] for i, v in enumerate(A_list)]

или

Prece_list = [[A_list[i], v] for i, v in enumerate(S_follow)]
0 голосов
/ 28 мая 2020

Простой способ:

A_list = [1,2,3,4,5,6,7,8,9,10,11]
S_follow = [[2,3],4,[5,6],8,7,9,8,10,10,11,0]

A_list = [[n,S_follow[n-1]] for n in A_list]
print(A_list)

Вывод:

[[1, [2, 3]], [2, 4], [3, [5, 6]], [4, 8], [5, 7], [6, 9], [7, 8], [8, 10], [9, 10], [10, 11], [11, 0]]
0 голосов
/ 28 мая 2020

Вы можете просто использовать встроенную функцию zip:

Prece_list = [[a, b] for a, b in zip(A_list, S_follow)]

Аналогично:

Prece_list = list(map(list, zip(A_list, S_follow)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...