#python
Вопрос:
Это код, который я сделал
from itertools import product
lst1=list(map(int,input().split()))
lst2=list(map(int,input().split()))
l3=product(lst1,lst2)
Ввод:
1 2
2 3
Выход:
<itertools.product object at 0x7f02bdedb500>
Вывод, который я хочу:
(1, 3) (1, 4) (2, 3) (2, 4)
Я попытался добавить круглые скобки, скобки, а также попытался сохранить значение в переменной и распечатать его. Я все еще не мог получить этот вывод. Мне не нужен вывод в виде списка, ожидаемый вывод показан выше.
Комментарии:
1. Попробуйте сделать так: l3= список(продукт(lst1,lst2)), затем выведите l3.
2.
itertools.product
производит итерацию, точно так же, какrange
. Чтобы принудительно отобразить результат в списке, просто используйтеlist(iterable)
, гдеiterable
в вашем случае можно выполнить любую итерациюproduct(lst1,lst2)
.3. просто добавьте
print(list(l3))
4. поэтому просто повторите каждый элемент и распечатайте с
end flag
помощью asprint(i, end=' ')
Ответ №1:
product(lst1,lst2)
возвращает itertools.product
объект, который просто используется map function
для обновления внутреннего 1-го элемента индекса кортежа или повторения каждого элемента.
Поэтому используйте функцию map и обновляйте каждый кортеж на 1 с помощью лямбда-функции :
l3= list(map(lambda i: (i[0], i[-1] 1), product(lst1,lst2)))
print(l3)
выход :
[(1, 3), (1, 4), (2, 3), (2, 4)]
Проблема с этим выводом заключается в том, что это строковое представление list object
, поэтому лучше всего использовать этот метод.
Поэтому используйте итерацию, хотя этот повторяющийся объект :
for i in l3:
i = list(i)
i[-1] = 1
print(tuple(i), end=' ')
выход :
(1, 3) (1, 4) (2, 3) (2, 4)
Ответ №2:
Преобразуйте или приведите его в список, это работает.
from itertools import product
lst1=list(map(int,input().split()))
lst2=list(map(int,input().split()))
l3=list(product(lst1,lst2))
Ответ №3:
«itertools.product» возвращает генератор, чтобы получить вывод списка, который вам нужен :
list(l3)
Однако, не уверен, откуда вы взяли свои ценности, я получил :
[(1, 2), (1, 3), (2, 2), (2, 3)]
Ответ №4:
Вы можете повторить l3, чтобы получить желаемый результат:
for i in l3:
print(i, end=" ")