Latest posts on Простое объединение эл-тов списка разных типов topichttp://python.su/forum/topic/31835/2017-01-12T12:40:26+02:00Общий :: Python для новичков :: Простое объединение эл-тов списка разных типов
2017-01-12T12:40:26+02:00Kyrym173266Шаман и Зерг натолкнули меня на мысли, где я ошибся. Хотя чувствую, что не смог объяснить Зергу, чего я хочу.<br/>1) Я писал выражения для списка, но не написал сам список (он должен быть в выражении 3), поэтому i ссылалась на строку из выражения 2.<br/>2) Я не правильно писал str для всего списка.Должно было быть:<br/><div class="code"><pre> i = ''.join(map(str, i))
</pre></div><br/><br/>
Общий :: Python для новичков :: Простое объединение эл-тов списка разных типов
2017-01-12T12:17:23+02:00ZerG173260<div class="code"><pre> <span class="err">Здесь</span> <span class="err">“</span><span class="n">i</span> <span class="o">=</span> <span class="err">‘γ</span> <span class="o">=</span> <span class="n">x</span><span class="o">+</span><span class="n">y</span> <span class="o">=</span> <span class="err">’</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="o">+</span><span class="n">y</span><span class="p">)</span><span class="err">”</span> <span class="n">i</span> <span class="o">-</span> <span class="err">это</span> <span class="err">безусловно</span> <span class="err">строка</span><span class="p">,</span> <span class="err">но</span> <span class="err">строка</span> <span class="err">только</span> <span class="err">из</span><span class="o">-</span><span class="err">за</span> <span class="err">инструкции</span> <span class="nb">str</span><span class="p">()</span>
</pre></div><br/><div class="code"><pre> <span class="n">x</span> <span class="o">=</span> <span class="mi">30</span>
<span class="n">y</span> <span class="o">=</span> <span class="mi">50</span>
<span class="n">i</span> <span class="o">=</span> <span class="s1">'γ = x+y = '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">x</span> <span class="o">+</span> <span class="n">y</span><span class="p">)</span> <span class="c1"># Строка</span>
<span class="n">i</span> <span class="o">=</span> <span class="s1">'γ = x+y = '</span> <span class="o">+</span> <span class="p">(</span><span class="n">x</span> <span class="o">+</span> <span class="n">y</span><span class="p">)</span> <span class="c1"># Тоже строка но Конкатекация не сработает потому что</span>
<span class="c1"># i = STR + INT (по этому и применяется метод str() к числу)</span>
<span class="n">i</span> <span class="o">=</span> <span class="s1">'γ = x+y = '</span> <span class="p">,</span> <span class="p">(</span><span class="n">x</span> <span class="o">+</span> <span class="n">y</span><span class="p">)</span> <span class="c1"># Вот это уже был бы список</span>
</pre></div><br/>Если уже так принципиально не хочется юзать метод str() замените его на:<br/><br/><div class="code"><pre> <span class="n">i</span> <span class="o">=</span> <span class="s1">'γ = x+y = {}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">x</span><span class="o">+</span><span class="n">y</span><span class="p">)</span>
</pre></div>или<br/><div class="code"><pre> <span class="n">i</span> <span class="o">=</span> <span class="s1">'γ = x+y = </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">x</span> <span class="o">+</span> <span class="n">y</span><span class="p">)</span>
</pre></div>
Общий :: Python для новичков :: Простое объединение эл-тов списка разных типов
2017-01-12T12:05:48+02:00Kyrym173259<blockquote><em>ZerG</em><br/>i - у тебя СТРОКА а не список!!!!</blockquote>Здесь “i = ‘γ = x+y = ’+str(x+y)” i - это безусловно строка, но строка только из-за инструкции str(). без неё конструкция меняется на <div class="code"><pre> "i=[...]"
</pre></div>- а это уже список. Str() меня не устраивает, поэтому я и спрашиваю про i как список. В посте 3 я это подробно описал… Сейчас увидел, что форум сожрал всё что было в квадратных скобках… Сейчас исправлю.<br/>
Общий :: Python для новичков :: Простое объединение эл-тов списка разных типов
2017-01-12T11:22:55+02:00ZerG173257<strong>Kyrym</strong><br/>ТОварищь! <br/>i - у тебя СТРОКА а не список!!!!<br/>Если тебе нужно что бы i была списком тогда это было бы как то так<br/><div class="code"><pre> <span class="c1"># -*- coding: utf-8 -*-</span>
<span class="n">x</span> <span class="o">=</span> <span class="mi">30</span>
<span class="n">y</span> <span class="o">=</span> <span class="mi">50</span>
<span class="n">i</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'γ = x+y = '</span><span class="p">,</span> <span class="n">x</span> <span class="o">+</span> <span class="n">y</span><span class="p">]</span>
<span class="k">print</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
<span class="k">print</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">i</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="k">print</span><span class="p">(</span><span class="n">i</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</pre></div><br/>И результат:<br/><div class="code"><pre> <span class="o"><</span><span class="k">class</span> <span class="err">'</span><span class="nc">list</span><span class="s1">'></span>
<span class="p">[</span><span class="s1">'γ = x+y = '</span><span class="p">,</span> <span class="mi">80</span><span class="p">]</span>
<span class="err">γ</span> <span class="o">=</span> <span class="n">x</span><span class="o">+</span><span class="n">y</span> <span class="o">=</span>
<span class="mi">80</span>
</pre></div>
Общий :: Python для новичков :: Простое объединение эл-тов списка разных типов
2017-01-12T11:14:33+02:00Shaman173256<blockquote><em>Kyrym</em><br/>но для этого каждую переменную придётся оборачивать в str(), а это трудоёмко.</blockquote><div class="code"><pre>map(str, lst)</pre></div>проблема?<br/>Раз уж проглядываются отчеты, возможно Вам нужен готовый шаблонизатор.
Общий :: Python для новичков :: Простое объединение эл-тов списка разных типов
2017-01-12T11:04:11+02:00Kyrym173254<blockquote><em>ZerG</em><br/>суть непонятна вопроса совсем</blockquote>У меня i - это изначально список, состоящий из текста и вычисляемых переменных:<br/><div class="code"><pre> i = [текст, переменная, текст, текст, переменная ...]
</pre></div>Нужно получить вид:<br/>i = текст<br/>Т.е.<div class="code"><pre> [текст, переменная, текст, текст, переменная ...] = [текст+переменная+текст+текст+переменная+ ...] = текст
</pre></div>Я знаю, что это можно сделать с помощью инструкции str(), но для этого каждую переменную придётся оборачивать в str(), а это трудоёмко.<br/>Вот я и спрашиваю, как иначе решить данный вопрос. <br/><br/><blockquote><em>ZerG</em><br/>i у вас и так строка? </blockquote>не понял. зачем вы выделили гамму.
Общий :: Python для новичков :: Простое объединение эл-тов списка разных типов
2017-01-12T10:41:56+02:00ZerG173248суть непонятна вопроса совсем <br/><div class="code"><pre> <span class="n">x</span> <span class="o">=</span> <span class="mi">30</span>
<span class="n">y</span> <span class="o">=</span> <span class="mi">50</span>
<span class="n">i</span> <span class="o">=</span> <span class="s1">'γ = x+y = '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">x</span> <span class="o">+</span> <span class="n">y</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
<span class="k">print</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
</pre></div><br/><div class="code"><pre> <span class="o"><</span><span class="k">class</span> <span class="err">'</span><span class="nc">str</span><span class="s1">'></span>
<span class="err">γ</span> <span class="o">=</span> <span class="n">x</span><span class="o">+</span><span class="n">y</span> <span class="o">=</span> <span class="mi">80</span>
</pre></div><br/>i у вас и так строка?
Общий :: Python для новичков :: Простое объединение эл-тов списка разных типов
2017-01-12T10:36:16+02:00Kyrym173246Есть работающая конструкция<br/><div class="code"><pre> <span class="n">i</span> <span class="o">=</span> <span class="s1">'γ = x+y = '</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="o">+</span><span class="n">y</span><span class="p">)</span>
</pre></div>на выходе получим: γ = x+y = 80<br/>Т.е. ‘γ = x+y = ’ - текст, x+y - переменные. Но переводить переменные с помощью инструкции str() мне совершенно не удобно. Как проще всего изменить код?<br/><br/>Полная версия программы:<br/><div class="code"><pre> <span class="c1"># Питон 3</span>
<span class="c1"># -*- coding: utf-8 -*-</span>
<span class="n">data</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'-'</span><span class="o">*</span><span class="mi">30</span><span class="p">,</span><span class="s1">'''</span>
<span class="s1">Ход програмы'''</span><span class="p">)</span>
<span class="n">x</span> <span class="o">=</span> <span class="mi">30</span>
<span class="n">y</span> <span class="o">=</span> <span class="mi">50</span>
<span class="c1"># Выражение 1</span>
<span class="n">i</span> <span class="o">=</span> <span class="s1">'γ = x+y = '</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="o">+</span><span class="n">y</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
<span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
<span class="c1"># Лишний для отчёта текст</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'Лишний для отчёта текст'</span><span class="p">)</span>
<span class="c1"># Выражение 2</span>
<span class="n">i</span> <span class="o">=</span> <span class="s1">'ξ = x-y = '</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="o">-</span><span class="n">y</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
<span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
<span class="c1"># Блок отчётов</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'-'</span><span class="o">*</span><span class="mi">30</span><span class="p">,</span><span class="s1">'''</span>
<span class="s1">Текст отчёта списка data'''</span><span class="p">)</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
</pre></div>Я пробовал следующие варианты, но пока безуспешно:<br/><div class="code"><pre> <span class="c1"># Выражение 3</span>
<span class="c1"># i = ''.join['ξ = x/y = ',x/y]</span>
<span class="c1"># i = ' '.join(str(i))</span>
<span class="c1"># for i in i:</span>
<span class="c1"># i.append(map(str(i)))</span>
<span class="c1"># i = [str(i) for i in i]</span>
<span class="c1"># def add(x,y): return x + y</span>
<span class="c1"># i = [x for lst in i for x in lst]</span>
</pre></div>