#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))
Приведенные выше ответы намного чище.