Вложено для l oop внутри функции печати в python - PullRequest
0 голосов
/ 09 марта 2020

Я хочу напечатать следующий шаблон, используя однострочную печать.

1 1

1 2

...

2 3 *

2 4

print(*[a, b, for a in range(5): for b in range(3)], sep='\n')

Ошибка при получении: SyntaxError: неверный синтаксис

Как напечатать этот шаблон, используя однострочную печать?

Ответы [ 3 ]

2 голосов
/ 09 марта 2020

Go для:

print(*[f'{a} {b}' for a in range(5) for b in range(3)], sep='\n')

0 0

0 1

0 2

1 0

1 1

1 2

...

1 голос
/ 09 марта 2020

Вы допустили две синтаксические ошибки в вашем понимании списка

В понимании списка значение для l oop не является выражением, поэтому вы не пишете двоеточие :.

Вы хотите сохранить строку в списке понимания. Выражение, которое хранится в понимании списка, не является частью функции печати. Есть несколько способов построения строки. В этом случае f-строки являются хорошим решением.

Правильный синтаксис:

print(*[f"{a} {b}") for a in range(5) for b in range(3)], sep='\n')

Если понимание списка становится слишком длинным, я склонен разбивать его на несколько строк.

data = [
    f"{a} {b}"
    for a in range(5)
    for b in range(3)
]
print(*data, sep="\n")
1 голос
/ 09 марта 2020

Другая вещь, которую другие ответы не учитывают, состоит в том, что для того, чтобы получить шаблон, который вы ищете, диапазон должен начинаться с 1, а a и b должны поменяться местами.

print(*["{} {}".format(a,b) for a in range(1, 3) for b in range(1, 5)], sep='\n')
...