так что я хочу понять концепцию функции product() в itertools. Я имею в виду, что отличает доходность и доходность. И пусть этот код будет сокращен в любом случае.Принцип работы продукта itertools Функция
def product1(*args, **kwds):
pools = map(tuple, args) * kwds.get('repeat', 1)
n = len(pools)
if n == 0:
yield()
return
if any(len(pool) == 0 for pool in pools):
return
indices = [0] * n
yield tuple(pool[i] for pool, i in zip(pools, indices))
while 1:
for i in reversed(range(n)): # right to left
if indices[i] == len(pools[i]) - 1:
continue
indices[i] += 1
for j in range(i+1, n):
indices[j] = 0
yield tuple(pool[i] for pool, i in zip(pools, indices))
break
else:
return
Похоже, что вы хотите, чтобы мы написали код для вы. Хотя многие пользователи готовы создавать код для кодера, терпящего бедствие, они обычно помогают только тогда, когда плакат уже попытался решить проблему самостоятельно. Хорошим способом продемонстрировать это усилие является включение кода, который вы написали до сих пор, пример ввода (если есть), ожидаемый вывод и вывод, который вы фактически получаете (вывод, трассировка и т. Д.). Чем больше деталей вы предоставляете, тем больше ответов вы получите.Проверьте [FAQ] (http://stackoverflow.com/tour) и [Как спросить] (http://stackoverflow.com/questions/how-to-ask). – TigerhawkT3
Без 'itertools'? Тогда я думаю, что это петли. есть ли причина, по которой вы не будете использовать 'itertools'? или это больше похоже на вызов для самого себя? – pwnsauce
1. Напишите код, используя itertools. 2. Перейдите в документацию itertools. Для каждой используемой функции найдите «эта функция, эквивалентная следующему коду:». 3. Скопируйте эти блоки в свой код. – Kevin