小编Sha*_*ayn的帖子

Python列表有多大?

在Python中,列表有多大?我需要一个大约12000个元素的列表.我还能运行排序等列表方法吗?

python size list

108
推荐指数
7
解决办法
15万
查看次数

Python 3.5中的抽象方法体

我有一个抽象类,Model有一些抽象方法,我应该在方法体中放入什么?

  1. 回报

    class Model(metaclass=ABCMeta):
        @abstractmethod
        def foo(self): return
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过

    class Model(metaclass=ABCMeta):
        @abstractmethod
        def foo(self): pass
    
    Run Code Online (Sandbox Code Playgroud)
  3. 提出描述性错误

    class Model(metaclass=ABCMeta):
        @abstractmethod
        def foo(self):
            raise NotImplementedError("Class {class_name} doesn't implement {func_name} function"
                                  .format(class_name=self.__class__.__name__, func_name=self.foo.__name__))
    
    Run Code Online (Sandbox Code Playgroud)

通常我会实现方法3并引发错误,但是看起来它会是多余的,因为Python为我引发了一个错误:

>>> bar = module.Model()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Can't instantiate abstract class Model with abstract methods foo
Run Code Online (Sandbox Code Playgroud)

在提出的选项之间,哪个是最佳实践?或者还有另一种方法我应该处理这个问题吗?

python metaclass abstract-methods python-3.x

10
推荐指数
1
解决办法
1660
查看次数

如何检查记录器是否存在

我不得不扩展现有的日志库来添加一些功能。其中之一是允许处理程序侦听任何现有日志而无需事先知道它是否存在的功能。以下允许处理程序侦听,但不检查日志是否存在:

def listen_to_log(target, handler):
    logging.getLogger(target).addHandler(handler)
Run Code Online (Sandbox Code Playgroud)

问题是我不希望任何处理程序侦听未登录的日志,并且希望ValueError在日志不存在时引发 a 。理想情况下,我会执行以下操作:

def listen_to_log(target, handler):
    if not logging.logExists(target):
        raise ValueError('Log not found')
    logging.getLogger(target).addHandler(handler)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我一直无法找到类似的功能logging.logExists,是否有这样的功能,或方便的解决方法?

python error-handling logging python-3.x

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

Java 中数组/集合的解包

在 Python 和 C# 中,如果您有一个元组/列表,您可以使用以下命令将其解压:

tup = (1, 3)
a, b = tup
Run Code Online (Sandbox Code Playgroud)

然后a = 1b = 3

在我看来,Java 没有元组,但是如果我有一个已知大小的Vector原始[]数组,那么Java 中的数组/向量是否有类似的解包习惯用法?目前我正在使用以下解决方案。

a = arr[0]
b = arr[1]
Run Code Online (Sandbox Code Playgroud)

其中 arr 是真实元组的替代品。

我愿意接受任何实现类似行为的答案,即使它涉及外部库/附加类/等

java arrays tuples iterable-unpacking

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

取消搁置在 Perforce/P4 中独占检出的文件

这里肯定是菜鸟 - 我的书架上有一个文件,我想将其取消搁置以运行一些东西,但是该文件是在另一台计算机上专门签出的。理想情况下,我想要做的是在本地取消搁置文件,执行一些操作,然后丢弃本地更改。

我考虑过使用p4 printandp4 copy但它们似乎没有按要求工作 - 例如复制似乎在仓库路径之间复制文件。

如何取消搁置并忽略锁定?或者,如何从架子上下载文件并在本地覆盖它?

perforce locking unshelve shelving

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

Python中的多参数空值合并和内置的“或”函数

Python具有很好的空合并语法:

c = a or b
Run Code Online (Sandbox Code Playgroud)

设置caif anot not False、、Noneempty或0,否则c设置为b

(是的,从技术上讲,这不是空合并,更像是bool合并,但是对于这个问题而言,它足够接近。)

对于对象集合,没有明显的方法可以执行此操作,因此我编写了一个函数来执行此操作:

from functools import reduce

def or_func(x, y):
    return x or y

def null_coalesce(*a):
    return reduce(or_func, a)
Run Code Online (Sandbox Code Playgroud)

这行得通,但是写我自己的or_func似乎不太理想-肯定有一个内置的like __or__吗?我尝试使用object.__or__operator.__or__,但是第一个给出一个AttributeError,第二个给出按位|(或)运算符。

结果,我有两个问题:

  1. 是否有一个内置函数像a or b
  2. 是否有此类null合并函数的内置实现?

两者的答案似乎都没有,但这令我有些惊讶。

python null-coalescing-operator null-coalescing python-3.x nonetype

5
推荐指数
2
解决办法
98
查看次数

领导者选举算法

我正在探索集群计算中的各种架构.一些流行的是:

  1. 主从.
  2. RPC
  3. ...

在Master-slave中,通常的方法是将一台机器设置为主机,将一堆机器设置为主机控制的从机.一个特别的算法让我感兴趣.它被称为Leader-Election Algo,它在选择哪些机器将成为主机时具有一定的随机性.

我的问题是 - 为什么有人想以这种方式选择一台主机?与手动选择机器作为主机相比,这种方法有什么优势?

algorithm distributed-computing cluster-computing master-slave

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

Python:操作Color对象列表?

我正在使用颜色包来创建渐变颜色,如下所示:

from colour import Color
orange = Color("#e65318")
turquoise = Color("#3297A5")
palette_list = list(orange.range_to(turquoise,10))
Run Code Online (Sandbox Code Playgroud)

输出是一个列表,如下所示:

[<Color #e65318>, <Color #de911b>, <Color #d7c71f>, <Color #a7cf22>, <Color #6fc825>, <Color #3dc128>, <Color #2bb944>, <Color #2db36f>, <Color #30ac94>, <Color #3297a5>]
Run Code Online (Sandbox Code Playgroud)

而我真正想要的是这样的:

['#e65318', '#de911b', '#d7c71f', '#a7cf22', '#6fc825', '#3dc128', '#2bb944', '#2db36f', '#30ac94', '#3297a5']
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试过了 ai_palette_list.remove('Color')

返回ValueError: list.remove(x): x not in list.

我认为这是一个相当普遍的问题,但似乎无法找到任何理智,系统的方法来删除"颜色"这个词并返回一个字符串.

python string

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