我以为Python交互模式下的显示总是等效的print(repr())
,但事实并非如此None
。这是语言功能还是我缺少什么?谢谢
>>> None
>>> print(repr(None))
None
>>>
Run Code Online (Sandbox Code Playgroud) 我有一个文件中的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) list
Python中的A 现在实现为动态指针数组,因此它不适合在前端插入和删除.但是,环形缓冲区也支持O(1)索引.它也可以像动态数组一样扩展和收缩,以支持两端的O(1)摊销插入和删除.为什么CPython没有选择这个实现,或者它的主要缺点是什么?
python language-design list data-structures python-internals
我创建了一个函数,生成一个连续递增的字母表列表.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) 我花了将近 2 小时的时间使用weights.npz中的预训练模型(tensorflow)来 检测车牌,但我无法修复它。我收到此错误消息,我以前从未见过。那么,如何解决呢?
回溯(最近一次调用最后一次):文件“./detect.py”,第 189 行,在 pt1 = tuple(reversed(map(int, pt1))) TypeError: 'map' 对象不可逆
我读的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
.
__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) 考虑这个简单的类:
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 中定义抽象元类并实例化它时,如下所示:
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 是抽象类的实例。相反,它运行没有问题。发生了什么事?我该怎么做?
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 ×9
python-3.x ×4
awk ×1
bash ×1
comparison ×1
equality ×1
generator ×1
grep ×1
import ×1
infinite ×1
iterator ×1
list ×1
metaclass ×1
mysql ×1
opencv ×1
python-2.x ×1
python-3.7 ×1
python-3.8 ×1
shell ×1
string ×1
tensorflow ×1
tuples ×1
unix ×1