Я написал код. Я понял, что когда я хочу расширить приведенный ниже код, это сделает синтаксис расточительным. как сделать его эффективным?
a = ['a', 'b', 'c', 'd', 'e']
b = int(input("Number of digit:\n"))
#This is for 1 digit printed
if b == 1:
for i in a:
print(i)
#This is for 2 digit printed
elif b == 2:
for i in a:
for j in a:
print(i,j)
#This is for 3 digit printed
elif b == 2:
for i in a:
for j in a:
for k in a:
print(i,j,k)
Не могли бы вы объяснить ваше личное определение слова «синтаксис».
я отредактировал это. как эффективно код, пожалуйста, все ответьте, я уважаю это :)
itertools.product
упростит ваш код:
import itertools
a = ['a', 'b', 'c', 'd', 'e']
b = int(input("Number of digit:\n"))
for i in itertools.product(a, repeat=b):
print(" ".join(i))
Наверное, это выход, я думаю. Это напечатает так, как вы хотите, чтобы ваши элементы были объединены. Подробнее о itertools
import itertools
a = ['a','b','c']
num = 2
if num == 2:
a = [x for x in itertools.product(a, a)]
print(a) # prints this : [('a', 'a'), ('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'b'), ('b', 'c'), ('c', 'a'), ('c', 'b'), ('c', 'c')]
Вы можете использовать itertools
, чтобы обобщить это для любого b
следующим образом:
import itertools
a = ['a', 'b', 'c', 'd', 'e']
b = int(input("Number of digit:\n"))
for t in itertools.product(a, repeat=b):
print(*t)
Если вместо этого вы хотите сохранить кортежи в списке, вы можете сделать:
vals = list(itertools.product(a, repeat=b))
можете ли вы объяснить, что означает "*" перед t:)
Да, *t
в print(*t)
просто вставляет итерацию в список аргументов. Например, если t
— это кортеж ("a", "b", "c")
, то print(*t)
совпадает с print("a", "b", "c")
. Это даст вам точно такой же формат вывода, который у вас есть в вашем коде.
@Tom Karzes без *
работает нормально, с *
выдает ошибку ниже TypeError: join() takes exactly one argument (3 given)
с b = 3
@PIG Вы путаете два разных ответа. print(*t)
работает. В моем решении нет join
. Мое решение, которое вы прокомментировали, это прямо над этих комментариев. Вы искали другое решение и пытались добавить к нему *
. Вы, вероятно, пробовали что-то вроде print(" ".join(*t))
, что, конечно, не работает. print(*t)
работает..
Пожалуйста, объясните, что означает Я хочу сделать это 2 цифры?