#python #python-2.7
#python #python-2.7
Вопрос:
У меня есть список, который отсортирован и сгруппирован на основе 2 элементов подсписка, как показано ниже
[[[2178393, 'a', 'online', 0, 20], [2178394, 'a', 'away', 0, 30], [2178395, 'a', 'away', 0, 40]],[[2178389, 'b', 'online', 0, 10], [2178390, 'b', 'online', 0, 15], [2178392, 'b', 'online', 1, 25], [2178391, 'b', 'online', 1, 30], [2178397, 'b', 'away', 1, 40]], [[2178388, 'c', 'online', 0, 15], [2178396, 'c', 'away', 0, 20], [2178402, 'c', 'online', 0,25], [2178408, 'c', 'online', 1, 50]]]
выше есть 3 подсписка, которые содержат списки, я хочу добавить 5-й элемент (4-й индекс) из следующего списка, чтобы представить список внутри подсписков. Простым добавлением 5-го элемента (4-го индекса) каждого следующего подсписка к текущему подсписку.
результат должен быть
[[[2178393, 'a', 'online', 0, 20,30], [2178394, 'a', 'away', 0, 30,40], [2178395, 'a', 'away', 0, 40]],[[2178389, 'b', 'online', 0, 10,15], [2178390, 'b', 'online', 0, 15,25], [2178392, 'b', 'online', 1, 25,30], [2178391, 'b', 'online', 1, 30,40], [2178397, 'b', 'away', 1, 40]], [[2178388, 'c', 'online', 0, 15,20], [2178396, 'c', 'away', 0, 20,25], [2178402, 'c', 'online', 0,25,50], [2178408, 'c', 'online', 1, 50]]]
Пожалуйста, помогите мне.
Комментарии:
1. пожалуйста, разместите это должным образом. Не удается понять требуемый вами результат
2. под редактированием они подразумевали форматирование списков, чтобы мы могли понять, что происходит. добавьте некоторый отступ, несколько новых строк и т.д. . И затем, пожалуйста, объясните лучше, чего вы пытаетесь достичь, а затем покажите нам, что вы пробовали. Мы здесь не делаем домашнюю работу.
Ответ №1:
Вот код для достижения этого
for outer in range(0,len(list)):
for inner in range(0,len(list[outer])-1):
list[outer][inner].append(list[outer][inner 1][4])
Желаемый результат
Комментарии:
1. Пожалуйста, не используйте
list
, поскольку это зарезервированное ключевое слово
Ответ №2:
Используйте вложенное list
понимание вместе с zip_longest
. Это использует преимущество того факта, что каждому из самых внутренних lists
просто нужен последний элемент следующего list
, который будет добавлен к нему, при этом последний самый внутренний список остается неизменным.
from itertools import zip_longest
data = [[[2178393, 'a', 'online', 0, 20], [2178394, 'a', 'away', 0, 30], [2178395, 'a', 'away', 0, 40]],[[2178389, 'b', 'online', 0, 10], [2178390, 'b', 'online', 0, 15], [2178392, 'b', 'online', 1, 25], [2178391, 'b', 'online', 1, 30], [2178397, 'b', 'away', 1, 40]], [[2178388, 'c', 'online', 0, 15], [2178396, 'c', 'away', 0, 20], [2178402, 'c', 'online', 0,25], [2178408, 'c', 'online', 1, 50]]]
expected = [[[2178393, 'a', 'online', 0, 20,30], [2178394, 'a', 'away', 0, 30,40], [2178395, 'a', 'away', 0, 40]],[[2178389, 'b', 'online', 0, 10,15], [2178390, 'b', 'online', 0, 15,25], [2178392, 'b', 'online', 1, 25,30], [2178391, 'b', 'online', 1, 30,40], [2178397, 'b', 'away', 1, 40]], [[2178388, 'c', 'online', 0, 15,20], [2178396, 'c', 'away', 0, 20,25], [2178402, 'c', 'online', 0,25,50], [2178408, 'c', 'online', 1, 50]]]
result = [[bottom_list_first bottom_list_second[-1:]
for bottom_list_first, bottom_list_second
in zip_longest(middle_list, middle_list[1:], fillvalue=[])]
for middle_list in data]
print(result == expected)
Вывод:
True