相关疑难解决方法(0)

找到两个嵌套列表的交集?

我知道如何获得两个平面列表的交集:

b1 = [1,2,3,4,5,9,11,15]
b2 = [4,5,6,7,8]
b3 = [val for val in b1 if val in b2]
Run Code Online (Sandbox Code Playgroud)

要么

def intersect(a, b):
    return list(set(a) & set(b))

print intersect(b1, b2)
Run Code Online (Sandbox Code Playgroud)

但是当我必须找到嵌套列表的交集时,我的问题就开始了:

c1 = [1, 6, 7, 10, 13, 28, 32, 41, 58, 63]
c2 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]]
Run Code Online (Sandbox Code Playgroud)

最后我想收到:

c3 = [[13,32],[7,13,28],[1,6]]
Run Code Online (Sandbox Code Playgroud)

你能帮我个忙吗?

有关

python intersection list

468
推荐指数
10
解决办法
60万
查看次数

Google代码搜索的替换?

作为开发人员,谷歌代码搜索对我来说非常有价值 - 我每周都会使用它几次,以了解其他开发人员如何使用(通常记录很少)的API.查看其中一些API的内部结构或查找哪些API与您想要的功能相对应也很方便(特别是Android的一个很好的资源 - 给它一些你在屏幕上看到的文字,它会通常找到实施类).

现在谷歌截至2012年1月15日关闭代码搜索,是否有任何良好的替代品?

code-search code-search-engine

160
推荐指数
4
解决办法
5万
查看次数

3个或更多数字的最小公倍数

如何计算多个数字的最小公倍数?

到目前为止,我只能在两个数字之间进行计算.但不知道如何扩展它来计算3个或更多数字.

到目前为止,这就是我做到的

LCM = num1 * num2 /  gcd ( num1 , num2 )
Run Code Online (Sandbox Code Playgroud)

使用gcd是计算数字的最大公约数的函数.使用欧几里得算法

但我无法弄清楚如何计算3个或更多数字.

algorithm math lcm

141
推荐指数
8
解决办法
14万
查看次数

有没有办法使collections.Counter(Python2.7)意识到它的输入列表是排序的?

问题

我一直在玩不同的方式(在Python 2.7中)从语料库或字符串列表中提取(单词,频率)元组列表,并比较它们的效率.据我所知,在正常情况下列表未排序的情况下,模块中的Counter方法collections优于我在其他地方提出或找到的任何方法,但它似乎没有太大的好处.预先排序的列表,我已经提出了在这种特殊情况下轻松击败它的方法.那么,简而言之,是否有任何内置的方法来告知Counter列表已经排序以进一步加快它的速度?

(下一部分是未分类的列表,其中Counter工作魔法;你可能想要在处理排序列表时跳到它失去魅力的那一端.)

未排序的输入列表

一种方法不起作用

天真的方法是使用sorted([(word, corpus.count(word)) for word in set(corpus)]),但一个可靠的,只要你的语料库是几千个条目你进入运行时的问题-这并不奇怪,因为你通过的n个字的完整列表运行男也曾多次,其中m为唯一单词的数量.

对列表+本地搜索进行排序

因此,我试图做之前,而不是我发现的Counter是确保所有的搜索都是严格的地方,首先分拣输入表(我也有删除的数字和标点符号和所有条目转换为小写,以避免像"富"重复, 'Foo'和'foo:').

#Natural Language Toolkit, for access to corpus; any other source for a long text will do, though.
import nltk 

# nltk corpora come as a class of their own, as I udnerstand it presenting to the
# outside as a unique list but underlyingly represented as several lists, with no more
# than one ever …
Run Code Online (Sandbox Code Playgroud)

python performance counter python-2.7

9
推荐指数
2
解决办法
1891
查看次数

Python Chain getattr作为字符串

import amara
def chain_attribute_call(obj, attlist):
    """
    Allows to execute chain attribute calls
    """
    splitted_attrs = attlist.split(".")
    current_dom = obj
    for attr in splitted_attrs:
        current_dom = getattr(current_dom, attr)
    return current_dom

doc = amara.parse("sample.xml")
print chain_attribute_call(doc, "X.Y.Z")
Run Code Online (Sandbox Code Playgroud)

在oder中为对象执行链属性调用作为字符串,我不得不开发上面的笨拙片段.我很好奇是否会有更聪明/有效的解决方案.

python getattr

6
推荐指数
2
解决办法
1979
查看次数

使用列表中的项目更改嵌套dicts的dict中的值?

你将如何根据列表的值修改/创建嵌套dicts的dict中的键/值,其中列表的最后一项是dict的值,其余的项目是否依赖于dicts中的键?这将是列表:

list_adddress = [ "key1", "key1.2", "key1.2.1", "value" ]
Run Code Online (Sandbox Code Playgroud)

在解析命令行参数时,这只会是一个问题.很明显,在脚本中修改/创建这个值非常容易使用dict_nested["key1"]["key1.2"]["key1.2.1"]["value"].

这将是dicts的嵌套词典:

dict_nested = { 
    "key1": {
                "key1.1": { 
                            "...": "...",
                },
                "key1.2": { 
                            "key1.2.1": "change_this",
                },
            },

    "key2": {
                "...": "..."
            },
}
Run Code Online (Sandbox Code Playgroud)

我想在这种情况下,需要像递归函数或列表推导这样的东西.

def ValueModify(list_address, dict_nested):
    ...
    ...
    ValueModify(..., ...)
Run Code Online (Sandbox Code Playgroud)

此外,如果其中的项目list_address会转到不存在的词典中的键,则应创建它们.

python recursion dictionary nested list-comprehension

5
推荐指数
1
解决办法
6178
查看次数