Avatar ·

Как перемножить списки в Python 3.x

📁 список, python

Имеется текстовый файл с данным содержанием ""D11i14V17A8n7R11H16r18P18E5h18i18x8O16Y5s13d1X6u4a20C2p2O14J5I11L5K6y4X19n10s17h1E17Q5Z1U1K6U8E8L11n14k6"". Я написал код который разделяет буквенные значения в один список, цифровые в другой. Как правильно перемножить данные из списка, чтобы в конечном итоге получилось D * 11 = DDDDDDDDDDD (Буква D 11 раз). Код ниже:

import rec = []d = []result = 0with open('dest.txt', 'r') as s:    for line in s:        line = line.strip()        lst = re.split('(\d*)', line)        for i in lst:            if i.isalpha() == True:                c.append(i)            else:                d.append(i)for a, b in zip(c, d):      result += a*bprint(result)

Результат:

D:\Python\lib\re.py:212: FutureWaing: split() requires a non-empty patte match.  retu _compile(patte, flags).split(string, maxsplit)---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)<ipython-input-22-24c875dcd30e> in <module>()     16      17 for a, b in zip(c, d):---> 18      result += a*b     19      20 print(result)TypeError: can't multiply sequence by non-int of type 'str'
Avatar ·
In [20]: import reIn [21]: task = ""D11i14V17A8n7R11H16r18P18E5h18i18x8O16Y5s13d1X6u4a20C2p2O14J5I11L5K6y4X19n10s17h1E17Q5Z1U1K6    ...: U8E8L11n14k6""In [22]: numbers, lit = list(re.findall(r'\d+', task)), list(re.findall(r'\D', task))In [23]: ''.join(int(x) * y for x, y in zip(numbers, lit))

Результат:

Out[25]: 'DDDDDDDDDDDiiiiiiiiiiiiiiVVVVVVVVVVVVVVVVVAAAAAAAAnnnnnnnRRRRRRRRRRRHHHHHHHHHHHHHHHHrrrrrrrrrrrrrrrrrrPPPPPPPPPPPPPPPPPPEEEEEhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiixxxxxxxxOOOOOOOOOOOOOOOOYYYYYsssssssssssssdXXXXXXuuuuaaaaaaaaaaaaaaaaaaaaCCppOOOOOOOOOOOOOOJJJJJIIIIIIIIIIILLLLLKKKKKKyyyyXXXXXXXXXXXXXXXXXXXnnnnnnnnnnssssssssssssssssshEEEEEEEEEEEEEEEEEQQQQQZUKKKKKKUUUUUUUUEEEEEEEELLLLLLLLLLLnnnnnnnnnnnnnnkkkkkk'

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

Блоги