Преобразование списка целых чисел и строк в чистую строку

#python #python-3.x

#python #python-3.x

Вопрос:

У меня есть список, содержимое которого:

 x = ['A', 2, 'B', 2, 'C', 2, 'D', 2, 'a', 4, 'b', 2, 'c', 1, 'd', 2]
  

Я хочу вывод в виде:

 A2B2C2D2a4b2c1d2
  

Я попытался со строкой:

 print(''.join(str(x)))
  

Но это выдает мне ошибку, которая гласит:

 print(''.join(str(x)))
TypeError: 'str' object is not callable`
  

Думаю, это происходит из-за этих целых чисел вместе со строками.

Как решить это, чтобы получить желаемый результат, как указано выше?

Комментарии:

1. print(''.join(map(str, x)))

Ответ №1:

Используйте map() :

 ''.join(map(str, x))
  

Код:

 x = ['A', 2, 'B', 2, 'C', 2, 'D', 2, 'a', 4, 'b', 2, 'c', 1, 'd', 2]

print(''.join(map(str, x)))
# A2B2C2D2a4b2c1d2
  

Ответ №2:

str(x) предоставляет строковое представление x — оно не повторяет значения в x . Попробуйте это:

 print(''.join([str(a) for a in x]))
  

Ответ №3:

Попробуйте это :

 print(''.join([str(k) for k in x]))
  

ВЫВОД :

 A2B2C2D2a4b2c1d2
  

Ответ №4:

 x = ['A', 2, 'B', 2, 'C', 2, 'D', 2, 'a', 4, 'b', 2, 'c', 1, 'd', 2]
  

Для понимания:

 s = ''                             # empty var
for elem in x:                     # for each elem in x
    s  = str(elem)                 # concatenate it with prev s
print(s)                           # A2B2C2D2a4b2c1d2
  

Который может быть сокращен до:

 print(''.join([str(elem) for elem in x]))  # A2B2C2D2a4b2c1d2
  

Использование reduce:

 print(reduce(lambda x,y:str(x) str(y),x))   # A2B2C2D2a4b2c1d2
  

Ответ №5:

Это также можно сделать, создав новый список, в котором все элементы из x были преобразованы в строки:

 x = ['A', 2, 'B', 2, 'C', 2, 'D', 2, 'a', 4, 'b', 2, 'c', 1, 'd', 2]

strings = []

for e in x:
    strings.append(str(e))

print(''.join(strings))
  

Приведенные выше ответы намного чище.