小编Chr*_*nds的帖子

在Python交互模式下未显示“无”

我以为Python交互模式下的显示总是等效的print(repr()),但事实并非如此None。这是语言功能还是我缺少什么?谢谢

>>> None
>>> print(repr(None))
None
>>>
Run Code Online (Sandbox Code Playgroud)

python

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

使用-w(--word-regexp)标志为什么grep如此缓慢和内存密集?

我有一个文件中的id列表和一个数据文件(大小约为3.2Gb),我想提取数据文件中包含id和下一行的行.我做了以下事情:

grep -A1 -Ff file.ids file.data | grep -v "^-" > output.data
Run Code Online (Sandbox Code Playgroud)

这有效,但也提取了不需要的子串,例如,如果id EA4也被拉出线EA40.

所以我尝试使用相同的命令,但将-w(--word-regexp)标志添加到第一个grep以匹配整个单词.但是,我发现我的命令现在运行了> 1小时(而不是~26秒),并且还开始使用10千兆字节的内存,所以我不得不杀死这份工作.

为什么添加-w使命令如此缓慢和内存占用?如何有效地运行此命令以获得所需的输出?谢谢

file.ids 看起来像这样:

>EA4
>EA9
Run Code Online (Sandbox Code Playgroud)

file.data 看起来像这样:

>EA4 text
data
>E40 blah
more_data
>EA9 text_again
data_here
Run Code Online (Sandbox Code Playgroud)

output.data 看起来像这样:

>EA4 text
data
>EA9 text_again
data_here
Run Code Online (Sandbox Code Playgroud)

unix bash shell awk grep

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

为什么Python列表实现为动态数组而不是环形缓冲区?

listPython中的A 现在实现为动态指针数组,因此它不适合在前端插入和删除.但是,环形缓冲区也支持O(1)索引.它也可以像动态数组一样扩展和收缩,以支持两端的O(1)摊销插入和删除.为什么CPython没有选择这个实现,或者它的主要缺点是什么?

python language-design list data-structures python-internals

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

如何创建一个无限迭代器来生成递增的字母模式?

我创建了一个函数,生成一个连续递增的字母表列表.A,B,C ......,Z.在Z之后,它转到AA,AB,AC ...... AZ.这种模式重复.这类似于MS Excel的列名.目前,此函数生成一个有限的字母表列表.

_column_name_generator() = ['A', 'B', ..., 'AA', 'AB', ..., 'BA', 'BB', ..., 'CV']
Run Code Online (Sandbox Code Playgroud)

然后我可以结合一些有限列表迭代它,例如0-10.请参阅下面的代码.我想要的是创建一个生成器,它将为我提供一个无限长的递增字母表列表.

import string


def _column_name_generator():
    column_names = []
    for x in range(0, 100):
        if x < 26:
            column_names.append(string.ascii_uppercase[x % 26])
        else:
            column_names.append(column_names[x/26 - 1] + string.ascii_uppercase[x % 26])
    return column_names

container = []
for column_name, num in zip(_column_name_generator(), range(0, 10)):
    container.append(column_name + str(num))

print _column_name_generator()
print container

container = ['A0', 'B1', 'C2', 'D3', 'E4', 'F5', 'G6', 'H7', 'I8', 'J9']
Run Code Online (Sandbox Code Playgroud)

python iterator infinite

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

类型错误:“地图”对象不可逆

我花了将近 2 小时的时间使用weights.npz中的预训练模型(tensorflow)来 检测车牌,但我无法修复它。我收到此错误消息,我以前从未见过。那么,如何解决呢?

回溯(最近一次调用最后一次):文件“./detect.py”,第 189 行,在 pt1 = tuple(reversed(map(int, pt1))) TypeError: 'map' 对象不可逆

python opencv python-3.x tensorflow

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

何时将StopIteration转换为RuntimeError?

我读的Python 3文档在这里:

如果生成器代码直接或间接引发StopIteration,则将其转换为RuntimeError(保留StopIteration作为新异常的原因).

我不明白,有谁能解释一下?

这是我在Python 3.6中尝试过的,但似乎没有抓到:

def gen1():
    yield from [1, 2, 3]
    raise StopIteration

def gen2():
    raise StopIteration

try:
    a = list(gen1())
    # a == [1, 2, 3]
except RuntimeError:
    print("Caught")

try:
    a = gen1()
    next(a), next(a), next(a), next(a), next(a)
except RuntimeError:
    print("Caught")

try:
    gen2()
except RuntimeError:
    print("Caught")

try:
    a = list(gen2())
except RuntimeError:
    print("Caught")
Run Code Online (Sandbox Code Playgroud)

特别是,两次调用都gen2()提升了StopIteration,但仍未转换成RuntimeError.

python runtime-error generator python-3.x stopiteration

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

是否可以从 python 代码中删除所有 __future__ 语句,而不会影响其使用 python 3.7.1 的功能?

__future__如果我使用的是 python 3.7.1,是否可以从源代码中删除以下语句而不影响其功能?

from __future__ import nested_scopes
from __future__ import generators
from __future__ import division
from __future__ import absolute_import
from __future__ import with_statement
from __future__ import print_function
from __future__ import unicode_literals
Run Code Online (Sandbox Code Playgroud)

python import python-import python-3.x

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

3.8 比较对象方法导致不同的结果

考虑这个简单的类:

class A:
    def method(self): pass
    def __eq__(self, other): return True
Run Code Online (Sandbox Code Playgroud)

现在,如果我创建类的两个实例并比较它们的'method'属性,我会在 Python 3.7 和 3.8 中得到不同的结果:

meth1 = A().method
meth2 = A().method
print(meth1 == meth2)  # True in 3.7, False in 3.8
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?为什么方法在 3.7 中相等但在 3.8 中不相等?这与什么有关系__eq__

python comparison equality python-3.7 python-3.8

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

如何在Python中定义抽象元类

在 python 中定义抽象元类并实例化它时,如下所示:

from abc import ABC, abstractmethod


class AbstractMetaClass(type, ABC):
    @abstractmethod
    def func(self):
        pass


class MyClass(metaclass=AbstractMetaClass):
    pass
Run Code Online (Sandbox Code Playgroud)

我预计我的代码会失败,因为 MyClass 是抽象类的实例。相反,它运行没有问题。发生了什么事?我该怎么做?

python abstract-class metaclass python-3.x

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

Python:将元组转换为逗号分隔的String

import MySQLdb

db = MySQLdb.connect("localhost","root","password","database")
cursor = db.cursor()
cursor.execute("SELECT id FROM some_table")
u_data = cursor.fetchall()

>>> print u_data
((1320088L,),)
Run Code Online (Sandbox Code Playgroud)

我在互联网上找到的东西让我直到这里:

string = ((1320088L,),)
string = ','.join(map(str, string))
>>> print string
(1320088L,)
Run Code Online (Sandbox Code Playgroud)

我期望输出看起来像:

 #Single element expected result
 1320088L  
 #comma separated list if more than 2 elements, below is an example
 1320088L,1320089L
Run Code Online (Sandbox Code Playgroud)

python mysql string tuples python-2.x

4
推荐指数
2
解决办法
4801
查看次数