相关疑难解决方法(0)

python日期间隔交集

作为一个普遍感兴趣的问题,我想知道是否有更优雅/有效的方法来做到这一点.我有一个函数比较两个日期的开始/结束元组,如果它们相交,则返回true.

from datetime import date
def date_intersection(t1, t2):
    t1start, t1end = t1[0], t1[1]
    t2start, t2end = t2[0], t2[1]

    if t1end < t2start: return False
    if t1end == t2start: return True
    if t1start == t2start: return True
    if t1start < t2start and t2start < t1end: return True
    if t1start > t2start and t1end < t2end: return True
    if t1start < t2start and t1end > t2end: return True
    if t1start < t2end and t1end > t2end: return True
    if t1start > t2start …
Run Code Online (Sandbox Code Playgroud)

python datetime intersection

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

Python中这个运算符"_"的名称是什么?

我正在阅读Python的隐藏功能,我遇到了这个答案.

从帖子开始:

使用交互式shell时,"_"包含最后打印项的值:

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

这个运营商的名字是什么?我在文档上找不到它,我从未听说过它(以及其他语言).是否值得使用它?

PS.我想知道它的名字,因为我想看看该函数是如何实现的,并搜索其他语言是否具有这个非常棒的功能.

python

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

循环语句的else子句的启发和影响?

Python循环语句可能有一个else子句,当且仅当循环未被a终止时才执行该子句break.换句话说,当条件变为False(有while)或迭代器耗尽时(带for).

这个循环 - 其他构造是否源自另一种语言(理论上的或实际的)?它是否被任何较新的语言所采用?

也许我应该问问Guido的前任,但他肯定太忙了,无法进行如此徒劳的调查.;-)

相关讨论和示例: 在for循环中使用'else'的Pythonic方法

python history loops if-statement

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

比较运算符和'是' - python中的运算符优先级?

所以我在网上看了一些代码,我遇到了一条线(在第286行):
if depth > 0 and best <= -MATE_VALUE is None and nullscore > -MATE_VALUE:

我理解困难的部分是best <= -MATE_VALUE is None.

所以我解雇了翻译,看看如何value1 > value2 is value3工作等陈述.
所以我试过了

>>> 5 > 2 is True
False

>>> (5 > 2) is True 
True

>>> 5 > (2 is True) 
True
Run Code Online (Sandbox Code Playgroud)


我的问题

为什么5 > 2 is TrueTrue呢?这些东西通常如何运作?

谢谢.

python python-3.x

9
推荐指数
1
解决办法
284
查看次数

如何找到传递给函数的变量的名称?

在C/C++中,我经常发现它在调试时有用,比如定义一个宏,ECHO(x)打印出变量名及其值(即ECHO(variable)可能打印variable 7).您可以使用"字符串化操作符的宏来得到变量名#描述这里.有没有办法在Python中这样做?

换句话说,我想要一个功能

def echo(x):
    #magic goes here
Run Code Online (Sandbox Code Playgroud)

如果被称为foo=7; echo(foo)(或foo=7; echo('foo')可能),将打印出来foo 7.我意识到如果我将变量及其名称都传递给函数,这样做是微不足道的,但是在调试时我会使用这样的函数,重复总是会让我感到恼火.

python reflection variables

8
推荐指数
1
解决办法
1888
查看次数

收益 - 陈述或表达?

所以,我一直在阅读这篇文章,并了解了如何向生成器发送值.

而现在我有点困惑.产量是陈述还是表达?它不像函数一样使用括号语法,所以它看起来像语句.但它返回值,所以它就像表达式.

就在不久前,我已经开始讨论"为什么python没有'如果x = foo():( ...)'?" (为什么我们不能在if语句条件中分配).我说,语句是原子的,所以赋值语句和if语句应该分开.现在,我不知道该怎么想.

==编辑==

我做了我公平的阅读.

http://docs.python.org/2/reference/expressions.html#generator.send - "value参数成为当前yield表达式的结果."

因此,产生HAS值.我明白了,所有的文档都说这是一个陈述,但如果陈述可能有价值,那么表达和陈述之间的差异到底是什么?

另外,我知道什么是生成器,协同程序等等.我需要元语义或文档的语义:D

==最终答案==

显然,收益率可以是两者.只需阅读这些答案:(1)(2) - 我发现它们最有帮助.

python expression yield

8
推荐指数
2
解决办法
912
查看次数

Pythonic方法迭代文件而不是换行符

要按行迭代文件,可以做 -

for line in f: 
Run Code Online (Sandbox Code Playgroud)

(其中f是文件迭代器).

我想用逗号分隔的块来迭代文件,而不是用换行符分隔的块.我可以读取所有行,然后用逗号分割字符串,但是pythonic的方法是什么呢?

python

8
推荐指数
1
解决办法
117
查看次数

`{...}`在python变量的打印输出中是什么意思?

有人发布了这个有趣的公式,我在Python 3控制台中试了一下:

>>> (a, b) = a[b] = {}, 5
>>> a
{5: ({...}, 5)}
Run Code Online (Sandbox Code Playgroud)

虽然这里有很多需要解压缩的东西,但是我不理解的东西(以及有趣的角色配方的语义似乎特别难以搜索){...}在这种背景下的意义是什么?改变上面的一点:

>>> (a, b) = a[b] = {'x':1}, 5
>>> a
{5: ({...}, 5), 'x': 1}
Run Code Online (Sandbox Code Playgroud)

这是第二个输出让我感到困惑:我本来期望它{...}会被改变,但我最接近的猜测, 5暗示一个元组,其中第一个元素以某种方式未定义?那是什么{...}意思?如果是这样,这是我在Python中的一个新类型,我希望有一个名称,以便我可以了解更多.

python ellipsis

8
推荐指数
1
解决办法
829
查看次数

用于memoize的Python func_dict; 其他有用的技巧?

Python函数对象有一个属性字典func_dict,在函数外部可见并且是可变的,但在调用函数时不会被修改.(我从昨天问过的问题的答案(#1753232)中学到了这一点:谢谢!)我正在阅读代码(http://pythonprogramming.jottit.com/functional_programming),它记住了Fibonacci数字的计算并思考,"为什么不使用该func_dict属性进行记忆?" 它起作用了(见下文;代码末尾的输出).这有点像有一个类属性,但在对象外面有初始化代码(在这种情况下,不是类而是函数).

我想知道使用这个属性可以做什么相似(或不同)的技巧

def fib(n):
    if n in fib.cache:
        print "found fib.cache[%d] = %d: " %(n, fib.cache[n])
        return fib.cache[n]
    else:
        print "fib.cache[%d] = fib(%d) + fib(%d)" % (n, n-1, n-2)
        fib.cache[n] = fib(n-1) + fib(n-2)
        print "modified fib.cache: ", fib.cache
        return fib.cache[n]

fib.cache = {0:0, 1:1}

for x in range(7):
    print "==================>", x
    print fib( x)

"""
==================> 0
found fib.cache[0] = 0: 
0
==================> 1
found fib.cache[1] = 1: 
1
==================> …
Run Code Online (Sandbox Code Playgroud)

python dictionary function memoization fibonacci

6
推荐指数
1
解决办法
3172
查看次数

我可以对多个属性使用相同的@property setter吗?

我的课程有很多属性,都需要使用相同类型的setter:

@property
def prop(self):
    return self._prop

@prop.setter
def prop(self, value):
    self.other_dict['prop'] = value
    self._prop = value
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以将此setter结构应用于多个属性,而无需为每个属性编写这两种方法?

python getter-setter python-decorators

6
推荐指数
1
解决办法
1215
查看次数