@dllngr

Возвести элементы в списке в степень равную индексу элемента +1?

Есть следующий код, который заполняет пустой список L цифрами от 1 до 100, затем разбивает число на составляющие цифры и добавляет их списком в список X.
Далее возводит каждую в цифру в степень по номеру индекса в подсписке +1:
a = 1
b = 100
L = list(range(a,b+1))
X = [([int(d) for d in str(n)]) for n in L]
test = []
for el in X:
    el = [(i ** ((el.index(i)+1))) for i in el]
    test.append(el)


В результате:
[[1], [2], [3], [4], [5], [6], [7], [8], [9], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9], [1, 0, 0]] #список X 

[[1], [2], [3], [4], [5], [6], [7], [8], [9], [1, 0], [1, 1], [1, 4], [1, 9], [1, 16], [1, 25], [1, 36], [1, 49], [1, 64], [1, 81], [2, 0], [2, 1], [2, 2], [2, 9], [2, 16], [2, 25], [2, 36], [2, 49], [2, 64], [2, 81], [3, 0], [3, 1], [3, 4], [3, 3], [3, 16], [3, 25], [3, 36], [3, 49], [3, 64], [3, 81], [4, 0], [4, 1], [4, 4], [4, 9], [4, 4], [4, 25], [4, 36], [4, 49], [4, 64], [4, 81], [5, 0], [5, 1], [5, 4], [5, 9], [5, 16], [5, 5], [5, 36], [5, 49], [5, 64], [5, 81], [6, 0], [6, 1], [6, 4], [6, 9], [6, 16], [6, 25], [6, 6], [6, 49], [6, 64], [6, 81], [7, 0], [7, 1], [7, 4], [7, 9], [7, 16], [7, 25], [7, 36], [7, 7], [7, 64], [7, 81], [8, 0], [8, 1], [8, 4], [8, 9], [8, 16], [8, 25], [8, 36], [8, 49], [8, 8], [8, 81], [9, 0], [9, 1], [9, 4], [9, 9], [9, 16], [9, 25], [9, 36], [9, 49], [9, 64], [9, 9],[1, 0, 0]] # список test

Как видно, код вроде бы работает нормально, но в числе 99 вторая 9 почему то не возводится в квадрат. Подскажите, пожалуйста, почему так происходит
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Подскажите, пожалуйста, почему так происходит

Почитайте внимательно что .index делает.
Он находит индекс первого попавшегося соответствующего элемента в списке.
Индекс элемента 9 в списке [9, 9] внезапно - будет 0 - вне зависимости от того - какую девятку вы вводите - ту что слева, или ту что справа.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
seven5674
@seven5674
Старый я уже что бы что-то в себе менять
Задача не корректно поставлена

Каждый элемент в степень согласно позиции в глобальном списке
for index, i in enumerate(range(100), start=1):
    print(i**index)


Каждое число каждого элемента согласно позиции в глобальном списке
p = list()
for index, i in enumerate(range(100), start=1):
    k = list()
    for j in (str(i)):
        k.append(int(j)**index)
    p.append(k)
print(p)


Каждое число каждого элемента согласно позиции в локальном списке
p = list()
for i in range(100):
    k = list()
    for index, j in enumerate(str(i), start=1):
        k.append(int(j) ** index)
    p.append(k)
print(p)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы