Как заменить значение в списке их порядковым номером? - PullRequest
0 голосов
/ 09 января 2019

У меня есть список:

a = [[6, 8, 12, 15], [2, 5, 13], [1], [5], [6, 15]]

И я хочу заменить все значения во внутренних списках их порядковыми значениями, такими как:

b = [[0, 0, 0, 0], [1, 1, 1], [2], [3], [4, 4]]

Я пробовал это:

for jj in a:
    for uu in range(0, len(jj)):
        for k,q in enumerate(a):
            jj[uu] == k

Это не выводило список, который я хотел. Как мне это сделать?

Ответы [ 4 ]

0 голосов
/ 09 января 2019

Остальные ответы хорошие, вот еще одно понимание списка, которое также работает:

>>> a = [[6, 8, 12, 15], [2, 5, 13], [1], [5], [6, 15]]
>>> b = [[i for _ in y] for i, y in enumerate(a)]
>>> b
[[0, 0, 0, 0], [1, 1, 1], [2], [3], [4, 4]]
0 голосов
/ 09 января 2019

Может быть, это может помочь.

[[i]*len(a[i]) for i in range(len(a))]

Выход:

[[0, 0, 0, 0], [1, 1, 1], [2], [3], [4, 4]]
0 голосов
/ 09 января 2019

Давайте воспользуемся списочным пониманием, чтобы решить эту проблему -

a = [[6, 8, 12, 15], [2, 5, 13], [1], [5], [6, 15]]
b = [[i for j in range(len(a[i]))] for i in range(len(a))]
b
    [[0, 0, 0, 0], [1, 1, 1], [2], [3], [4, 4]]
0 голосов
/ 09 января 2019

Это ваш желаемый результат?

In [1]: a = [[6, 8, 12, 15], [2, 5, 13], [1], [5], [6, 15]]

In [2]: b = [[idx] * len(sublist) for idx, sublist in enumerate(a)]

In [3]: b
Out[3]: [[0, 0, 0, 0], [1, 1, 1], [2], [3], [4, 4]]

Этот ответ также более Pythonic, чем версии, использующие range(len(a)).

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