M_N01 Ответов: 2

Как удвоить число в списке?


Я возьму случайный список от пользователя по положительному номеру(уже сделано)
Затем я хотел бы удвоить свои номера в списке.
например, ['110, '212', '39839'] должно быть удвоено, чтобы
['111100', '221122','3399883399'] так, я сначала преобразуется в (ул.)а затем использовать
лямбда умножается на *2. Но мне нужно сделать это в каждом индексе, так как же я могу это сделать?
Мое утверждение while не работает.
Я новичок, так что любая помощь будет оценена по достоинству. Спасибо.
s= ["110", "212", "39839"]

i = 0
while i < len(s)-1:
    s= ''.join(map(lambda x:x*2, s[i]))
    if s[i] == s[i+1]:
            result += s[i]
            i += 1
            i += 1
return s


Что я уже пробовал:

Итак, я сначала преобразовал в str (), а затем использую
лямбда умножается на *2. Но мне нужно сделать это в каждом индексе, так как же я могу это сделать?
Мое утверждение while не работает.
Я новичок, так что любая помощь будет оценена по достоинству. Спасибо.

2 Ответов

Рейтинг:
15

Richard MacCutchan

Вы не удваиваете числа, вы изменяете строки символов. Тот факт, что это цифры, не имеет значения. Так что все, что вам нужно, это что-то простое, например:

s= ["110", "212", "39839", "ABC" ]
index = 0
while index < len(s):   # iterate the entries in s
    pnew = ''           # create a new empty string
    for c in s[index]:  # for each character in the original
        pnew += c + c   # append two of them to the new string
    s[index] = pnew     # replace the original with the new one
    index += 1          # process the next item in the list
print(s)                # print the final result


CPallini

5.

Richard MacCutchan

Спасибо.

M_N01

Привет, спасибо за помощь с объяснением. действительно полезный

Richard MacCutchan

Добро пожаловать. Я также предлагаю вам пойти в Учебник по Python — документация по Python 3.7.9[^], так как есть много хорошей информации и образцов, которые помогут вам учиться.

Рейтинг:
1

OriginalGriff

Хм... это странный код!

Давайте начнем с самого цикла. Предположим, у вас есть три страницы в книге, которую вам нужно прочитать, и по какой-то причине они были пронумерованы как страница 0, страница 1 и страница 2. Номер страницы действует как "индекс" в книге: вы хотите "страницу n", вы открываете книгу и считаете страницы от 0 до n, пока не достигнете ее.

Поэтому, чтобы прочитать все страницы, вам нужно посмотреть на каждую book[index] где index это ноль для первой страницы, один для второй и два для последней.
Ваш код этого не делает:

while i < len(s)-1:
Он начинается с нуля, это нормально, но предельный тест - "меньше, чем количество элементов минус один". Поскольку существует три элемента, то len из коллекции s будет три, так что три минус один будет два, так что цикл никогда не будет обрабатывать последний элемент.
Измените его на
while i < len(s):
Теперь он будет смотреть на значения i между 0 (начало) и 2 (конец) включительно.

Но это еще не все!
Почему ты увеличиваешься i дважды каждый раз по кругу?
result += s[i]
i += 1
i += 1
Это означает, что первый раз вокруг петли, i это ноль, во второй раз это два, и после этого больше нет значений, на которые можно смотреть!
Избавьтесь от одного приращения, чтобы он смотрел на каждый предмет по очереди!

И сделай себе одолжение: иди сюда: pdb — отладчик Python — документация по Python 3.9.0[^] и почитайте о отладчике python - он позволит вам точно посмотреть, что делает ваш код во время его выполнения, и это может сделать вашу жизнь намного проще с такими проблемами, как эта!


M_N01

Спасибо за решение!да, я посмотрю на это. Мне еще предстоит пройти долгий путь.