繁体   English   中英

为什么这个for循环返回一个类型'list'

[英]Why does this for loop return a type 'list'

我有以下代码生成列表/字典的所有设置分区。

#partition gen

def partitions(set_):
    if not set_:
        yield []
        return
    for i in range(2**len(set_)//2):
        parts = [set(), set()]
        for item in set_:
            parts[i&1].add(item)
            i >>= 1
        for b in partitions(parts[1]):
            yield [parts[0]]+b
            
def get_partitions(set_):
    for partition in partitions(set_):
        yield [list(elt) for elt in partition]
        

我想知道的是为什么,当这个 for 循环运行时,它返回一个类型list而不是string

def brute_force(cows,limit=10):
    total_weight = 0
    for partition in get_partitions(cows):
        for cow in partition:
            print(type(cow))
brute_force(x)

运行时返回<class 'list'>

方法get_partitions产生列表

def get_partitions(set_):
    for partition in partitions(set_):
        yield [list(elt) for elt in partition] # <-- here

所以,这里的cow是一个列表

def brute_force(cows,limit=10):
    total_weight = 0
    for partition in get_partitions(cows):
        for cow in partition:  # <-- here
            print(type(cow))
brute_force(x)

所以,如果你想要字符串,你应该将cow转换为字符串

def brute_force(cows,limit=10):
    total_weight = 0
    for partition in get_partitions(cows):
        for cow in partition:
            string_cow = "".join([str(c) for c in cow])
            print(string_cow)
brute_force({"betty":8,"john": 13, "mark":10})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM