Я хочу добавить два элемента одновременно к пониманию списка. Один элемент является постоянным. Как это можно достичь, используя только один цикл внутри понимания списка и никаких дополнительных функций. Ответы, которые не используют импорт, будут одобрены.
Взгляните на следующее:
>>> mystring = 'ABCELKJSDLHFWEHSJDHFKHIUEHFSDF'
>>> sum([['^', char] for char in mystring.lower()], [])
['^', 'a', '^', 'b', '^', 'c', '^', 'e', '^', 'l', '^', 'k', '^', 'j', '^', 's', '^', 'd', '^', 'l', '^', 'h', '^', 'f', '^', 'w', '^', 'e', '^', 'h', '^', 's', '^', 'j', '^', 'd', '^', 'h', '^', 'f', '^', 'k', '^', 'h', '^', 'i', '^', 'u', '^', 'e', '^', 'h', '^', 'f', '^', 's', '^', 'd', '^', 'f']
Я пытаюсь создать список с символом ^
, который был добавлен перед каждой буквой в нижнем регистре. В этом примере вам нужно использовать sum
, чтобы сгладить список. Однако, мой вопрос заключается в том, можно ли в первую очередь составить плоский список. Вышеуказанный выход является желаемым выходом.
Как и в, добавьте что-то постоянно перед переменной, которая изменяется с каждой итерацией цикла for
. Здесь нельзя использовать две петли for
, поскольку это было бы слишком просто, например:
mystring = 'ABCELKJSDLHFWEHSJDHFKHIUEHFSDF'
print [item for x in mystring.lower() for item in ['^', x]]
Если вы делаете что-то вроде этого:
>>> mystring = 'ABCELKJSDLHFWEHSJDHFKHIUEHFSDF'
>>> [['^', x] for x in mystring]
['^', 'a', '^', 'b', '^', 'c', '^', 'e', '^', 'l', '^', 'k', '^', 'j', '^', 's', '^', 'd', '^', 'l', '^', 'h', '^', 'f', '^', 'w', '^', 'e', '^', 'h', '^', 's', '^', 'j', '^', 'd', '^', 'h', '^', 'f', '^', 'k', '^', 'h', '^', 'i', '^', 'u', '^', 'e', '^', 'h', '^', 'f', '^', 's', '^', 'd', '^', 'f']
Вы получаете списки в списках. Таким образом, существует ли способ, по которому вы можете добавить два элемента одновременно в понимании списка, не используя дополнение для цикла или дополнительную функцию типа sum
? Я спрашиваю об этом, потому что это что-то довольно простое, но я не могу найти способ сделать это. Если вы попытаетесь сделать следующее:
>>> ['^', x for x in mystring.lower()]
File "<console>", line 1
['^', x for x in mystring.lower()]
^
SyntaxError: invalid syntax
Попытка дает SyntaxError
. Итак, что я прошу сделать в Python? Использование ()
дает мне список кортежей.
Я также попытался использовать оператор splat
/unpacking
:
>>> [*['^', x] for x in mystring.lower()]
File "<console>", line 1
[*['^', x] for x in mystring.lower()]
^
SyntaxError: invalid syntax
Но, как и выше, это тоже синтаксическая ошибка. Извините за это позднее изменение, но я пробовал следующее:
import itertools
mystring = "HELLOWORLD"
print(list(itertools.chain.from_iterable(('^', x) for x in mystring.lower())))
Но выше все еще требуется импорт.