Уведомления

Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Янв. 12, 2017 10:36:16

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 100
Репутация: +  1  -
Профиль   Отправить e-mail  

Простое объединение эл-тов списка разных типов

Есть работающая конструкция

 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]

Офлайн

#2 Янв. 12, 2017 10:41:56

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 1371
Репутация: +  42  -
Профиль   Отправить e-mail  

Простое объединение эл-тов списка разных типов

суть непонятна вопроса совсем

 x = 30
y = 50
i = 'γ = x+y = ' + str(x + y)
print(type(i))
print(i)

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

i у вас и так строка?

Отредактировано ZerG (Янв. 12, 2017 10:42:14)

Офлайн

#3 Янв. 12, 2017 11:04:11

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 100
Репутация: +  1  -
Профиль   Отправить e-mail  

Простое объединение эл-тов списка разных типов

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

ZerG
i у вас и так строка?
не понял. зачем вы выделили гамму.

Отредактировано Kyrym (Янв. 12, 2017 12:06:34)

Офлайн

#4 Янв. 12, 2017 11:14:33

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1277
Репутация: +  81  -
Профиль   Отправить e-mail  

Простое объединение эл-тов списка разных типов

Kyrym
но для этого каждую переменную придётся оборачивать в str(), а это трудоёмко.
map(str, lst)
проблема?
Раз уж проглядываются отчеты, возможно Вам нужен готовый шаблонизатор.

Офлайн

#5 Янв. 12, 2017 11:22:55

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 1371
Репутация: +  42  -
Профиль   Отправить e-mail  

Простое объединение эл-тов списка разных типов

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

Отредактировано ZerG (Янв. 12, 2017 11:23:59)

Офлайн

#6 Янв. 12, 2017 12:05:48

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 100
Репутация: +  1  -
Профиль   Отправить e-mail  

Простое объединение эл-тов списка разных типов

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

Офлайн

#7 Янв. 12, 2017 12:17:23

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 1371
Репутация: +  42  -
Профиль   Отправить e-mail  

Простое объединение эл-тов списка разных типов

 Здесь 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)

Отредактировано ZerG (Янв. 12, 2017 12:19:09)

Офлайн

#8 Янв. 12, 2017 12:40:26

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 100
Репутация: +  1  -
Профиль   Отправить e-mail  

Простое объединение эл-тов списка разных типов

Шаман и Зерг натолкнули меня на мысли, где я ошибся. Хотя чувствую, что не смог объяснить Зергу, чего я хочу.
1) Я писал выражения для списка, но не написал сам список (он должен быть в выражении 3), поэтому i ссылалась на строку из выражения 2.
2) Я не правильно писал str для всего списка.Должно было быть:

 i = ''.join(map(str, i))


Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version