@likeviolence

Как сделать вывод в строку более грамотно?

Есть список который хранит в себе множества с данными. Пример данных: [(161, 0, 'the-north-face', 25, 110), (164, 1, 'ralf-Lauren', 87, 170), (165, 2, 'the-north-face', 10, 75)]

Нужен вывод как этот (в одну строку, но сделанный правильнее, а не через заполнение массива):

(название the-north-face, состояние 25, цена 110, продать: /sell_0 \n
название ralf-Lauren, состояние 87, цена 170, продать: /sell_1)

sell = []
		for item in items:
			sell.append(f'название: {item[2]},  состояние: {item[3]},  цена: {item[4]},  продать:  /sell_{item[1]}')
			print(sell)
		await message.answer('\n\n'.join(sell))
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
adugin
@adugin Куратор тега Python
from itertools import starmap

items = [
    (161, 0, 'the-north-face', 25, 110),
    (164, 1, 'ralf-Lauren', 87, 170),
    (165, 2, 'the-north-face', 10, 75)
]

template = 'название: {2},  состояние: {3},  цена: {4},  продать: /sell_{1}'

message = '\n'.join(starmap(template.format, items))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Zolg
Лобовой вариант
answer = ''
for item in items:
    answer += f'название: {item[2]},  состояние: {item[3]},  цена: {item[4]},  продать:  /sell_{item[1]}\n'
await message.answer(answer)
можно через reduce примерно то же самое по смыслу написать.
Но зачем ? Совершенно не факт, что это будет работать эффективней вашего кода, да и кусок кода не похож на performance critical
Ответ написан
Ваш ответ на вопрос

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

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