相关疑难解决方法(0)

Python空生成器函数

在python中,可以通过将yield关键字放在函数体中来轻松定义迭代器函数,例如:

def gen():
    for i in range(100):
        yield i
Run Code Online (Sandbox Code Playgroud)

如何定义不产生值的生成器函数(生成0值),以下代码不起作用,因为python不能知道它应该是生成器而不是正常函数:

def empty():
    pass
Run Code Online (Sandbox Code Playgroud)

我可以做点什么

def empty():
    if False:
        yield None
Run Code Online (Sandbox Code Playgroud)

但那会非常难看.有没有很好的方法来实现一个空的迭代器函数?

python generator

86
推荐指数
6
解决办法
3万
查看次数

生成器可以递归吗?

我天真地尝试创建一个递归生成器.没工作.这就是我做的:

def recursive_generator(lis):
    yield lis[0]
    recursive_generator(lis[1:])

for k in recursive_generator([6,3,9,1]):
    print(k)
Run Code Online (Sandbox Code Playgroud)

我得到的只是第一项6.

有没有办法使这样的代码工作?基本上yield在递归方案中将命令转移到上面的级别?

python recursion generator

60
推荐指数
3
解决办法
2万
查看次数

是否有"从发电机输出所有输出"的简写?

是否有单行表达式:

for thing in generator:
    yield thing
Run Code Online (Sandbox Code Playgroud)

我试着yield generator无济于事.

python yield generator python-2.7

15
推荐指数
2
解决办法
3678
查看次数

大量列表串联

我正在尝试创建一个连接多个列表的函数,如果一个元素在2个或更多不同的列表中是相同的.

示例:

[[1,2],[3,4,5],[0,4]] 会成为 [[1,2],[0,3,4,5]

[[1],[1,2],[0,2]] 会成为 [[0,1,2]]

[[1, 2], [2, 3], [3, 4]] 会成为 [[1,2,3,4]]

事实上,如果它们有一个共同的元素,我们只是重新组合列表,我们删除这两个元素中的一个.决赛名单必须具有独特的元素.

我试着做以下功能.它可以工作,但是当使用大列表(大约100或200个列表列表)时,我得到以下递归错误: RecursionError: maximum recursion depth exceeded while getting the repr of an object

def concat(L):
   break_cond = False
   print(L)
   for L1 in L:
       for L2 in L:
           if (bool(set(L1) & set(L2)) and L1 != L2):
               break_cond = True
   if (break_cond):
       i, j = 0, 0
       while i < len(L):
           while j < len(L):
               if (bool(set(L[i]) & set(L[j])) and i != j):
                   L[i] = …
Run Code Online (Sandbox Code Playgroud)

python

11
推荐指数
2
解决办法
577
查看次数

在嵌套字典中搜索键

我在Python中有一个JSON对象,表示为嵌套的字典列表.(字典的某些值本身就是字典,依此类推.)

我希望能够在这个嵌套字典结构的所有分支上搜索一个键.
当我找到密钥时,我希望能够返回通向它的完整密钥路径.

例如:我正在寻找具有"特殊地址密钥"的"特殊代理",但并非所有特殊代理都拥有它,以及那些在其JSON中的不一致路径中拥有它的人.

所以我搜索关键Special Address code.结果应该返回:

/'People'/'SpecialAgents'/'007'/'Special Address code'/  
Run Code Online (Sandbox Code Playgroud)

所以我将能够以这种方式获得其信息:

json_obj['People']['SpecialAgents']['007']['Special Address code']
Run Code Online (Sandbox Code Playgroud)

请注意,这与此问题类似,但我需要找到所有密钥实例的完整路径.

python

2
推荐指数
1
解决办法
6320
查看次数

将嵌套字典转换为文件

我有一个字典,可以通过从文件中提取并修改值来对其进行修改,现在我想以类似的格式将其放回文件中。

字典类似于以下内容:

d={'a':
    {'c':'something else',
     'd':{'e':'some item'}
    },
   'b':
    {'z':'something else',
     's':{'f':'some item'}
    }
  }
Run Code Online (Sandbox Code Playgroud)

这是一本非常长的字典,带有嵌套项目,我想我必须使用某种递归

我不确定当前该如何处理,因此我没有现有代码可以从我所在的位置获取,这是字典到文件的位置。

我试图得到的最终结果如下,包括换行符和空格:

<a>
    c = something else
    <d>
        e = some item
    </d>
</a>
<b>
    z = something else
    <s>
        f = some item
    </s>
</b>
Run Code Online (Sandbox Code Playgroud)

python

2
推荐指数
1
解决办法
59
查看次数

标签 统计

python ×6

generator ×3

python-2.7 ×1

recursion ×1

yield ×1