Python-有没有一种方法可以将for别名添加为for循环?

时间:2018-11-29 22:43:50

标签: python python-3.x for-loop itertools

注意: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

在for循环中是否可以“按”?

我的Google搜索没有对stackoverflow提出任何疑问,但是如果我是第一个真正问过这个人的人,我会感到惊讶。也许我搜索的关键词不正确。

我已经读过this w3schools entry on 'as',但是它并没有说明在for循环中的用法。如果不是在w3schools上,我猜这不是Python可以做的,但是我还是想检查stackoverflow。

1 个答案:

答案 0 :(得分:0)

为自己作答:除通过评论外,没有人提供“答案”,因此请重新发布评论的实质内容,以标记OP为“已回答”。