Примечание: python --version
приводит к Python 3.6.4 :: Anaconda, Inc.
Я работаю с некоторым кодом itertools
, который, похоже, довольно сильно намеревается выпустить кортежи, но я хочу перебрать каждый результат как numpy.array
,Вариант использования: у меня есть набор данных с ~ 10 функциями, и мне любопытно, чтобы все комбинации наборов функций использовались для перебора кластеров.
Итак, я попробовал это:
from itertools import chain, combinations
import numpy as np
def the_python_way(value_list):
# creates a generator on an iterator; not sure which
def powerset(iterable):
# Note: Seems to forcefully make the results tuples. Casting the tuple
# produced by combinations(...) to something else seems to alter the
# production order a bit, but when I check the type produced by the
# final chain.from_iterable(...) it still says "tuple". Weird.
return chain.from_iterable(
np.array(combinations(iterable, len_n))
for len_n in range(len(iterable)+1))
for item in powerset(value_list):
print("type: ", type(item), ", item: ", np.array(item))
the_python_way([1,2,3])
Вывод:
type: <class 'tuple'> , item: ()
type: <class 'tuple'> , item: (1,)
type: <class 'tuple'> , item: (2,)
type: <class 'tuple'> , item: (3,)
type: <class 'tuple'> , item: (1, 2)
type: <class 'tuple'> , item: (1, 3)
type: <class 'tuple'> , item: (2, 3)
type: <class 'tuple'> , item: (1, 2, 3)
Да.Я мог бы просто переопределить значение цикла:
# attempt 1: just cast to np.array(item)
for item in powerset(value_list):
item = np.array(item)
# carry on
Но это кажется слишком C. Вот что я хотел бы сделать:
# attempt 2: syntax error
for np.array(value) as item in powerset(value_list):
# carry on
Не так предпочтительно, но я 'Я надеялся, что это сработает.Нет:
# attempt 5: syntax error
for np.array(value) in powerset(value_list) as item:
# carry on
Есть ли способ в цикле «как» в «как»?
Мой поиск в Google не поднял никаких вопросов по этому поводу в stackoverflow, но я был бы удивлен, если бы я был первым человеком, который на самом деле спросил.Возможно, я не выполнил поиск по правильным ключевым словам.
Я прочитал эту запись w3schools в 'as' , но она ничего не говорит об использовании в цикле for.Если это не в w3schools, я предполагаю, что это не то, что Python может сделать, но я все равно хотел проверить stackoverflow.