Как я могу объединить эти вызовы с print()?

#python #python-3.x #printing

#python #python-3.x #печать

Вопрос:

В моей программе мне нужно вывести список точек в сетке (кортежи строк и столбцов). Однако иногда строки и столбцы необходимо поменять местами. В настоящее время я делаю это так:

  if swapped:
    for col, row in points:
        print(row, col)
 else:
    for row, col in points:
        print(row, col)
 

Есть ли какой-нибудь способ сделать это с помощью одного вызова print() ?.

Ответ №1:

Итак, поменяйте их местами:

 for col, row in points:
    if swapped:
        col, row = row, col
    print(col, row)
 

Ответ №2:

Вы имеете в виду?

 for col, row in points:
    print(row   ' '   col if swapped else col   ' '   row)
 

Результат будет таким, как ожидалось, при использовании только одного print .

Комментарии:

1. Я думаю, это самая краткая версия. Я надеялся, что смогу использовать пару генераторов, чтобы избежать проверки swapped на каждой итерации

Ответ №3:

Самый простой и простой способ выполнить обмен в python заключается в следующем:

 s1, s2 = s2, s1
 

По вашему мнению, код может выглядеть следующим образом

 for col, row in points:
  if swapped:
    col, row = row, col
  print(row, col)
 

Ответ №4:

посмотрите на приведенное ниже решение, поменяйте переменную местами:

 for col, row in points:
    if swapped:
        row, col = col, row
    print(row, col)
 

Ответ №5:

Это тоже должно сработать

 
points = [(1,2), (3,4)]
swapped = True
for col, row in points:
    print((row, col) if swapped else (col, row))
#(2, 1)
#(4, 3)
 

Другой пример

 points = [(1,2.5), ('x',4)]
swapped = False
for col, row in points:
    print((row, col) if swapped else (col, row))
#(1, 2.5)
#('x', 4)