Найти - Пользователи
Полная версия: Простое объединение эл-тов списка разных типов
Начало » Python для новичков » Простое объединение эл-тов списка разных типов
1
Kyrym
Есть работающая конструкция
 i = 'γ = x+y = '+str(x+y)
на выходе получим: γ = x+y = 80
Т.е. ‘γ = x+y = ’ - текст, x+y - переменные. Но переводить переменные с помощью инструкции str() мне совершенно не удобно. Как проще всего изменить код?

Полная версия программы:
 # Питон 3
# -*- coding: utf-8 -*-
data = []
        
print('-'*30,'''
Ход програмы''')    
x = 30
y = 50
# Выражение 1
i = 'γ = x+y = '+str(x+y)
print(i)
data.append(i)
# Лишний для отчёта текст
print('Лишний для отчёта текст')
# Выражение 2
i = 'ξ = x-y = '+str(x-y)
print(i)
data.append(i)
# Блок отчётов
print('-'*30,'''
Текст отчёта списка data''')
for i in data:
    print(i)
Я пробовал следующие варианты, но пока безуспешно:
 # Выражение 3
# i = ''.join['ξ = x/y = ',x/y]
# i = ' '.join(str(i))
# for i in i:
#    i.append(map(str(i)))
# i = [str(i) for i in i]
# def add(x,y): return x + y
# i = [x for lst in i for x in lst]
ZerG
суть непонятна вопроса совсем
 x = 30
y = 50
i = 'γ = x+y = ' + str(x + y)
print(type(i))
print(i)

 <class 'str'>
γ = x+y = 80

i у вас и так строка?
Kyrym
ZerG
суть непонятна вопроса совсем
У меня i - это изначально список, состоящий из текста и вычисляемых переменных:
 i = [текст, переменная, текст, текст, переменная ...]
Нужно получить вид:
i = текст
Т.е.
  [текст, переменная, текст, текст, переменная ...] = [текст+переменная+текст+текст+переменная+ ...] = текст
Я знаю, что это можно сделать с помощью инструкции str(), но для этого каждую переменную придётся оборачивать в str(), а это трудоёмко.
Вот я и спрашиваю, как иначе решить данный вопрос.

ZerG
i у вас и так строка?
не понял. зачем вы выделили гамму.
Shaman
Kyrym
но для этого каждую переменную придётся оборачивать в str(), а это трудоёмко.
map(str, lst)
проблема?
Раз уж проглядываются отчеты, возможно Вам нужен готовый шаблонизатор.
ZerG
Kyrym
ТОварищь!
i - у тебя СТРОКА а не список!!!!
Если тебе нужно что бы i была списком тогда это было бы как то так
 # -*- coding: utf-8 -*-
x = 30
y = 50
i = ['γ = x+y = ', x + y]
print(type(i))
print(i)
print(i[0])
print(i[1])

И результат:
 <class 'list'>
['γ = x+y = ', 80]
γ = x+y =
80
Kyrym
ZerG
i - у тебя СТРОКА а не список!!!!
Здесь “i = ‘γ = x+y = ’+str(x+y)” i - это безусловно строка, но строка только из-за инструкции str(). без неё конструкция меняется на
 "i=[...]"
- а это уже список. Str() меня не устраивает, поэтому я и спрашиваю про i как список. В посте 3 я это подробно описал… Сейчас увидел, что форум сожрал всё что было в квадратных скобках… Сейчас исправлю.
ZerG
 Здесь i = ‘γ = x+y = +str(x+y) i - это безусловно строка, но строка только из-за инструкции str()

 x = 30
y = 50
i = 'γ = x+y = ' + str(x + y) # Строка
i = 'γ = x+y = ' + (x + y) # Тоже строка но Конкатекация не сработает потому что
#  i = STR + INT (по этому и применяется   метод str() к числу)
i = 'γ = x+y = ' , (x + y) #  Вот это уже был бы список

Если уже так принципиально не хочется юзать метод str() замените его на:

 i = 'γ = x+y =  {}'.format(x+y)
или
 i = 'γ = x+y = %s' % (x + y)
Kyrym
Шаман и Зерг натолкнули меня на мысли, где я ошибся. Хотя чувствую, что не смог объяснить Зергу, чего я хочу.
1) Я писал выражения для списка, но не написал сам список (он должен быть в выражении 3), поэтому i ссылалась на строку из выражения 2.
2) Я не правильно писал str для всего списка.Должно было быть:
 i = ''.join(map(str, i))


This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB