小编Ray*_*ger的帖子

过滤匹配字符串排列的集合

我试图使用itertools.permutations()来返回字符串的所有排列,并仅返回作为一组单词成员的那些排列.

import itertools

def permutations_in_dict(string, words): 
    '''
    Parameters
    ----------
    string : {str}
    words : {set}

    Returns
    -------
    list : {list} of {str}    

    Example
    -------
    >>> permutations_in_dict('act', {'cat', 'rat', 'dog', 'act'})
    ['act', 'cat']
    '''
Run Code Online (Sandbox Code Playgroud)

我目前的解决方案在终端上运行良好,但不知何故无法通过测试用例...

return list(set([''.join(p) for p in itertools.permutations(string)]) & words)
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

python algorithm permutation python-itertools multiset

16
推荐指数
2
解决办法
6161
查看次数

在REST API的HTTP/1.0请求中省略Accept*/*标头是一个错误吗?

我正在尝试确定在制作简单的REST API请求时,Python的urllib.urlopen()函数是否遗漏了HTTP Accept标头.

Facebook的图形API似乎注意到是否存在头部与否:

GET /zuck HTTP/1.0
Host: graph.facebook.com
Accept: */*
Run Code Online (Sandbox Code Playgroud)

如果没有接受头,返回的内容类型application/json; charset=UTF-8text/javascript; charset=UTF-8.这可能是Facebook的REST API中的错误,或者它可能是对缺少的接受标头的合法响应.

我注意到默认情况下使用curl等命令行工具Accept: */*:

$ curl -v https://graph.facebook.com/zuck
> GET /zuck HTTP/1.1
> User-Agent: curl/7.30.0
> Host: graph.facebook.com
> Accept: */*
Run Code Online (Sandbox Code Playgroud)

同样,Python请求包Accept: */*用作默认值:

def default_headers():
    return CaseInsensitiveDict({
        'User-Agent': default_user_agent(),
        'Accept-Encoding': ', '.join(('gzip', 'deflate')),
        'Accept': '*/*',
        'Connection': 'keep-alive',
    })
Run Code Online (Sandbox Code Playgroud)

我认为卷曲请求添加默认值是有原因的,但我不确定是什么原因.

HTTP/1.1的RFC 2616说明了这 */* indicates …

python rest curl http http-headers

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

Runner技术结合两个相等的链接列表

所以,我在这里面临疑问.

我正在读"Cracking the coding Interview"一书.以下文字写在那里.

假设您有一个链表a1->a2....->an->b1->b2....bn,并且想要将其重新排列a1->b1->a2->b2->.....an->bn.你不知道链表的长度,但你知道的是它是一个偶数.

(这里两个链表长度相同)

对于p2所做的每一次移动,你可以有一个指针p1(快速指针)每两个元素移动一次.当p1命中链表的末尾时,p2将位于端点.然后,将p1移回前面并开始"编织"元素.在每次迭代时,p2选择一个元素并在p1之后插入它.

我不明白当p1到达链表的末尾时,p2将处于中点.如果n = 3(长度= 6),这就是我想象的方式.下面的每个步骤代表一次迭代.

1. a1 (p1, p2)->a2->a3->b1->b2->b3 
2. a1->a2 (p2)->a3 (p1)->b1->b2->b3 
3. a1->a2->a3 (p2)->b1->b2 (p1)->b3 
4. Index out of bounds error because p2 now points to a node after b3.
Run Code Online (Sandbox Code Playgroud)

我错了吗?

algorithm linked-list

15
推荐指数
1
解决办法
5027
查看次数

继承和基类方法调用python

我希望基类中的方法在同一个类中调用另一个方法而不是在继承的类中调用重写方法.我想打印下面的代码

B级:6

A类:9

可以这样做吗?


# Base class definition
class ClassA(object):
    def __init__(self):
        print("Initializing A")

    # hoping that this function is called by this class's printFnX
    def fnX(self, x):
        return x**2

    def printFnX(self, x):
        print("ClassA:",self.fnX(x))

# Inherits from ClassA above
class ClassB(ClassA):
    def __init__(self):
        print("initizlizing B")

    def fnX(self, x):
        return 2*x

    def printFnX(self, x):
        print("ClassB:", self.fnX(x))
        ClassA.printFnX(self,x)

bx = ClassB()
bx.printFnX(3)
Run Code Online (Sandbox Code Playgroud)

python inheritance

13
推荐指数
2
解决办法
9966
查看次数

你会在现实生活中使用heapq Python模块吗?

在阅读Guido 使用Python在2MB内存中对一百万个32位整数进行排序后,我发现了该heapq模块,但这个概念对我来说非常抽象.

一个原因是我完全不理解堆的概念,但我确实理解Guido如何使用它.

现在,除了他有点疯狂的例子,你会用什么heapq模块?

它必须始终与排序或最小值相关吗?它只是你使用的东西,因为它比其他方法更快?或者你可以做一些你不能没有的优雅事物吗?

python algorithm heap priority-queue data-structures

13
推荐指数
2
解决办法
6050
查看次数

如何在Python中生成唯一随机浮点数列表

我知道有很简单的方法可以生成唯一随机整数列表(例如random.sample(range(1, 100), 10)).

我想知道是否有一些更好的方法来生成一个独特的随机浮点列表,除了编写一个像一个范围的函数,但接受像这样的浮点数:

import random

def float_range(start, stop, step):
    vals = []
    i = 0
    current_val = start
    while current_val < stop:
        vals.append(current_val)
        i += 1
        current_val = start + i * step
    return vals

unique_floats = random.sample(float_range(0, 2, 0.2), 3)
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

python random distinct-values

13
推荐指数
3
解决办法
5307
查看次数

Zephyr ASDL(抽象语法描述语言)

题:

什么是Zephyr ASDL以及它如何与词法分析器和解析器生成器等其他编译器技术相关?

(如果你相当完整,我会很感激,但是当它变得技术性时,指向其他在线参考,因为我对编译器的大部分知识来自于使用yacc和flex,在C中编写一个简单的最大munch lexer,并且看起来起来在网上阅读东西)

问题背景:

我一直在阅读http://docs.python.org/devguide/compiler.html,我遇到了以下几行:

使用Zephyr抽象语法定义语言(ASDL)指定AST节点的规范.

我按照底部的引文找到:http: //www.cs.princeton.edu/research/techreps/TR-554-97.

我在文章中的第一次阅读相当混乱,我希望在再次尝试之前,我可以首先更好地理解ASDL的目的(在编译过程的背景下).

python compiler-construction syntax definition asdl

12
推荐指数
1
解决办法
1778
查看次数

文学编程

文学编程是一种开发软件的方法,其中文档首先出现,然后是编码.一个人编写代码片段的文档,然后编写代码片段的实现.软件源代码的视觉外观将是一个简单的文档,如word,其中包含代码段落.

我正在尝试将我工作的开发工具转换为仅使用文字编程,因为它为代码可读性和维护带来了巨大的优势.但是,由于缺乏工具,LP的使用在公司中受到限制.例如,编程识字的理想方法是使用单词标记编写段落,然后插入带有实现的子段.但我似乎无法找到VS200x执行LP的任何好工具.

理想情况下,这样的工具看起来就像Word 2007,但集成到IDE中.当编码器将光标设置在代码段落上时,它将提供所有功能,就像我们现在在IDE中一样.

什么是LP的好工具,特别是.NET和VS200x?

.net ide ms-word literate-programming

11
推荐指数
3
解决办法
1841
查看次数

在python中,如何有效地找到列表中不一定相邻的最大连续数字集?

例如,如果我有一个列表

[1,4,2,3,5,4,5,6,7,8,1,3,4,5,9,10,11]
Run Code Online (Sandbox Code Playgroud)

该算法应返回[1,2,3,4,5,6,7,8,9,10,11].

澄清一下,最长的清单应该向前运行.我想知道什么是算法上有效的方法(最好不是O(n ^ 2))?

此外,我对一个不在python中的解决方案持开放态度,因为算法才是最重要的.

谢谢.

python arrays algorithm numpy dynamic-programming

11
推荐指数
1
解决办法
5427
查看次数

DOCTYPE有什么实际效果吗?

可能重复:
什么事,Doctype?

添加DOCTYPE是最佳实践 - HTML验证器希望看到它.从理论上讲,它通过声明使用哪种HTML风格使文档更好.换句话说,这是你应该经常做的事情.

也就是说,我没有看到任何浏览器似乎使用它的情况.我在各种浏览器中尝试了多种HTML,但是在添加DOCTYPE时,我无法找到文档呈现方式不同的单个示例.

有没有人知道DOCTYPE在浏览器中有任何实际影响的情况?

这个问题与DOCTYPE什么不同它没有要求DOCTYPE的存在在浏览器中具有可观察效果的特定示例.

html doctype

11
推荐指数
1
解决办法
1307
查看次数