#python
#python
Вопрос:
Используя приведенный ниже код —
x = ['a', 'b', 'c', 'n', 'a1', 'b1', 'c1']
for i in x :
print(i , end = " ")
Я хочу получить результат —
a b c
a1 b1 c1
В настоящее время он сдвигает a1 на один пробел —
a b c
a1 b1 c1
Если я не использую end =" "
, все элементы печатаются в их собственной строке.
Комментарии:
1. Проверьте, есть ли
i
n
перед печатью, и используйтеend = ""
, если да.
Ответ №1:
x = ['a', 'b', 'c', 'n', 'a1', 'b1', 'c1']
for i in x :
print(i , end = " " if i != 'n' else '')
Ответ №2:
Как правило, я бы хотел использовать str.join()
вместо перебора отдельных элементов, например:
for i in x:
print(i, end=' ')
Почти эквивалентно (игнорируя ложный пробел в конце для приведенного выше):
print(' '.join(x))
Но у вас есть небольшая проблема в том, что она также окружает 'n'
пробелами, поэтому вы хотите заменить ' n '
на 'n'
, так что:
In []:
print(' '.join(x).replace(' n ', 'n'))
Out[]:
a b c
a1 b1 c1
Или вы можете немного перестроиться и рассмотреть эту проблему как проблему разделения списка по значению (в данном случае 'n'
), а затем распечатать группы:
In []:
import itertools as it
print('n'.join(' '.join(g) for k, g in it.groupby(x, lambda a: a == 'n') if !k))
Out[]:
a b c
a1 b1 c1
Комментарии:
1. Первое решение для объединения / замены работает просто отлично… Не могли бы вы взглянуть на решение, которое я нашел самостоятельно?
2. Если ваше решение работает для вас, используйте его. Это не совсем дает тот же результат, что и при устранении пробела между элементами во второй строке. Я бы, вероятно, объединил a
join
сformat
, если вы ищете более табличный вывод, на SO есть много примеров, показывающих, как это сделать.
Ответ №3:
Я вроде как сам нашел другое решение … так что это тоже работает … вроде как — можете ли вы, ребята, предложить это.
x = ['a', 'b', 'c', 'n', 'a1', 'b1', 'c1']
y = ""
for i in x:
y = y i.rjust(2,)
print(y)
вывод —
a b c
a1b1c1
Ответ №4:
Создано также следующее необычное решение просто для удовольствия:
x = ['a', 'b', 'c', 'n', 'a1', 'b1', 'c1']
print(*map(lambda s: s (' ', '')[s.endswith('n')], x), sep = '')
Он учитывает тот факт, что для печати списка строк x
вам просто нужно сделать:
print(*x)
это то же самое и самый короткий способ сделать то, что было сделано в следующем коде первоначального участника:
for i in x :
print(i , end = " ")
Эта *
операция называется распаковкой.