[英]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.