Python: как сделать значения списка в списках нулями списков - PullRequest
0 голосов
/ 15 сентября 2018

Я хотел бы сделать все значения в первом списке внутри списка списков с именем "child_Before" ниже нуля.Часть кода, которую я написал для выполнения этой задачи, также показана ниже после списка:

child_Before = [[9, 12, 7, 3, 13, 14, 10, 5, 4, 11, 8, 6, 2],
            [1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1],
            [[1, 0], [1, 1]]]

    for elem in range(len(child_Before[0])):
        child_Before[0][elem] = 0

Ниже приведен ожидаемый результат:

 child_After = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                [1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1],
                [[1, 0], [1, 1]]]

Однако я думаю, что должно бытьболее клевый способ выполнить это упражнение.Поэтому я приветствую вашу помощь.Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 15 сентября 2018

Использование списка понимания:

child_after = [[i if n != 0 else 0 for i in j] for n, j in enumerate(child_Before)]
0 голосов
/ 15 сентября 2018

просто добавить творческий ответ

import numpy as np
child_Before[0] = (np.array(child_Before[0])&0).tolist()

это плохая практика, хотя, поскольку я использую побитовые операции в сенарио, где это не интуитивно, и я думаю, что есть небольшой шанс, что ясоздание 2-х петель xD на ярком сайте и делание всех нулей на O (1) сложность времени

0 голосов
/ 15 сентября 2018

Просто создайте список [0] такой же длины, что и исходный список.

# Answer to this question - make first list in the list to be all 0
child_Before[0] = [0] * len(child_Before[0])

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

# Make all elements 0
for child in range(len(child_Before)):
    child_Before[child] = [0] * len(child_Before[child])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...