尝试使用格式说明符来打印一个小于1而没有前导零的浮点数.我想出了一些黑客,但我认为有一种方法可以在格式说明符中删除前导零.我在文档中找不到它.
问题
>>> k = .1337
>>> print "%.4f" % k
'0.1337'
Run Code Online (Sandbox Code Playgroud)
劈
>>> print ("%.4f" % k) [1:]
'.1337'
Run Code Online (Sandbox Code Playgroud) 我有一个像这样的字典:
d[id1][id2] = value
Run Code Online (Sandbox Code Playgroud)
例:
books["auth1"]["humor"] = 20
books["auth1"]["action"] = 30
books["auth2"]["comedy"] = 20
Run Code Online (Sandbox Code Playgroud)
等等..
每个"auth"键可以具有与它们相关联的任何"类型".键控项目的值是他们编写的书籍数量.
现在我想要的是以矩阵的形式转换它...类似于:
"humor" "action" "comedy"
"auth1" 20 30 0
"auth2" 0 0 20
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?谢谢
考虑从大型csv文件(80 MB)返回的大型命名项(第一行),其中可能存在间断间隔
name_line = ['a',,'b',,'c' .... ,,'cb','cc']
Run Code Online (Sandbox Code Playgroud)
我正在逐行读取剩余的数据,我只需要处理具有相应名称的数据.数据可能看起来像
data_line = ['10',,'.5',,'10289' .... ,,'16.7','0']
Run Code Online (Sandbox Code Playgroud)
我尝试了两种方法.一个是从读取的每一行弹出空列
blnk_cols = [1,3, ... ,97]
while data:
...
for index in blnk_cols: data_line.pop(index)
Run Code Online (Sandbox Code Playgroud)
另一个是编译与L1名称关联的项目
good_cols = [0,2,4, ... ,98,99]
while data:
...
data_line = [data_line[index] for index in good_cols]
Run Code Online (Sandbox Code Playgroud)
在我使用的数据中肯定会有更好的线条然后坏线虽然它可能高达一半和一半.
我使用cProfile和pstats包来确定我速度最弱的链接,这表明pop是当前最慢的项目.我切换到列表comp,时间几乎加倍.
我想象一种快速的方法是切片检索只有好数据的数组,但对于具有交替空白和良好数据的文件来说这会很复杂.
我真正需要的是能够做到的
data_line = data_line[good_cols]
Run Code Online (Sandbox Code Playgroud)
有效地将索引列表传递到列表中以获取这些项目.现在我的程序在大约2.3秒内运行10 MB文件,弹出帐户大约0.3秒.
是否有更快的方式来访问列表中的某些位置.在C中,它只是取消引用指向数组中正确索引的指针数组.
添加:读取前的文件中的name_line
a,b,c,d,e,f,g,,,,,h,i,j,k,,,,l,m,n,
Run Code Online (Sandbox Code Playgroud)
读取和拆分后的name_line(",")
['a','b','c','d','e','f','g','','','','','h','i','j','k','','','','l','m','n','\n']
Run Code Online (Sandbox Code Playgroud) 我正在努力从MatLab迁移到Sage中的python.所以我使用这些命令,我在Sage中遇到了这个错误:
from scipy import misc
l = misc.lena();
import pylab as pl
pl.imshow(l)
Run Code Online (Sandbox Code Playgroud)
错误或消息(我不知道)是:
matplotlib.image.AxesImage object at 0xb80198c
Run Code Online (Sandbox Code Playgroud)
它没有显示任何图像
我创建了许多个人库来帮助我进行日常编码。最佳实践是将导入放在 python 程序的开头。但是假设我导入了我的库,甚至只是从库中导入了一个函数或类。所有模块都被导入(即使这些模块用于其他未使用的类或函数)。我认为这会增加程序的开销?
一个例子。我有一个名为 pytools 的库,它看起来像这样
import difflib
def foo():
# uses difflib.SequenceMatcher
def bar():
# benign function ie
print "Hello!"
return True
class foobar:
def __init__():
print "New foobar"
def ret_true():
return True
Run Code Online (Sandbox Code Playgroud)
函数 foo 使用 difflib。现在说我正在编写一个需要使用 bar 和 foobar 的新程序。我可以写
import pytools
...
item = pytools.foobar()
vals = pytools.bar()
Run Code Online (Sandbox Code Playgroud)
或者我可以做
from pytools import foobar, bar
...
item = foobar()
vals = bar()
Run Code Online (Sandbox Code Playgroud)
这两种选择是否会减少开销或排除 foo 的导入及其对 difflib 的依赖?如果 difflib 的导入是在 foo 函数内部呢?
我遇到的问题是,将简单程序转换为仅使用我的库中的一两个类或函数的可执行文件时,可执行文件最终为 50 mb 左右。
我已经阅读了 py2exe 的优化大小页面,并且可以使用它的一些建议进行优化。 …
似乎对象清理是我在编程期间遇到的一个非常常见的问题。迄今为止,我一直with按照此处的建议使用该语句
我今天有另一个想法,对我来说似乎更优雅(因为它不需要最终用户的 with 语句)。这个想法是对某种类型的对象使用 try-finally 装饰器(有一个清理方法)。
只是想知道这种做法是否有问题,或者是否有更好的方法。我不喜欢我的许多类需要使用 with 语句进行初始化,但我也想确保我的对象正确关闭。这是一个简短的例子。
def cleanme(func):
def _decorator(self, *args, **kwargs):
try:
func(self, *args, **kwargs)
finally:
self._cleanup()
return _decorator
class IObject(object):
def __init__(self):
self.file_name = "some_file.txt"
self._file_object = None
self._cleaned = True
@cleanme
def run(self):
self._connect()
while True:
# do some things over a long period
pass
def _connect(self):
self._file_object = open(self.file_name)
self._cleaned = False
def _cleanup(self):
if not self._cleaned:
self._file_object.close()
self._cleaned = True
Run Code Online (Sandbox Code Playgroud) 我正在尝试根据描述符制作探测器.我正在使用OpenCV,我已经看到有许多功能类型和描述符类型,以及匹配器类型.更多我还看到,对于要素类型,可以使用网格或金字塔等组合类型.
我没有找到对它们的一个很好的解释(金字塔除外,它说这对于非固有缩放的探测器来说是好的).我希望对每种类型和每种组合(特征描述符 - 匹配器)进行小的描述,以便创建一个想法而不是创建详尽的工作来搜索和验证每个可能的组合.
有谁知道更多关于此的信息?
我有一个标准名称列表
standard = ["Richard","Robert","Nicolas"]
Run Code Online (Sandbox Code Playgroud)
和一个别名字典(在这种情况下是昵称)
aliases = {standard[0]:["Richard","Rick","Dick","Rich"],
standard[1]:["Robert","Roberto","Bob"],
standard[2]:["Nicolas","Nick","Nic"]}
Run Code Online (Sandbox Code Playgroud)
我想创建一个新的字典,我可以把任何别名作为一个键,它将返回标准名称AKA交换键和值
我到目前为止唯一的猜测就是这个
t = {}
aliases = [t.update(zip(v,[k]*len(v))) for k,v in aliases.items()]
aliases = t
Run Code Online (Sandbox Code Playgroud)
是否有一个更整洁或更可读的方式来执行此操作(id不喜欢临时字典t).
我正在按照"如何像计算机科学家那样思考"来学习python,并且在理解类和对象章节时遇到了一些问题.
那里的一个练习是写一个名为moveRect的函数,它接受一个Rectangle和两个名为dx&dy的参数.它应该通过将dx添加到角的x坐标和dy到角的y坐标来改变矩形的位置.
现在,我不确定我写的代码是否正确.那么,让我告诉你我想做什么,你可以告诉我,我做得对吗?
首先我创建了一个类Rectangle然后我创建了一个实例并输入了细节,例如坐标x和y的值以及矩形的宽度和高度.
所以,这是我之前的代码:
class Rectangle:
pass
rect=Rectangle()
rect.x=3.0
rect.y=4.0
rect.width=50
rect.height=120
def moveRect(Rectangle,dx,dy):
Rectangle.x=Rectangle.x + dx
Rectangle.y=Rectangle.y + dy
dx=raw_input("enter dx value:")
dy=raw_input("enter dy value:")
moveRect(Rectangle,dx,dy)
Run Code Online (Sandbox Code Playgroud)
但是当我运行这段代码时,它给了我一个属性错误,并且:类Rectangle没有属性x
因此,我将以下行移动到moveRect函数中
rect=Rectangle()
rect.x=3.0
rect.y=4.0
rect.width=50
rect.height=120
Run Code Online (Sandbox Code Playgroud)
因此代码成了:
class Rectangle:
pass
def moveRect(Rectangle,dx,dy):
Rectangle.x=Rectangle.x + dx
Rectangle.y=Rectangle.y + dy
rect=Rectangle()
rect.x=3.0
rect.y=4.0
rect.width=50
rect.height=120
dx=raw_input("enter dx value:")
dy=raw_input("enter dy value:")
moveRect(Rectangle,dx,dy)
Run Code Online (Sandbox Code Playgroud)
但是,这段代码仍然给我一个错误.那么,这段代码实际上有什么问题呢?目前,我觉得好像我使用反复试验编写了这段代码,并在看到错误时改变了部分.我想正确理解这是如何运作的.所以,请详细说明一下.
这本书"如何像计算机科学家一样思考"并未在第12章中介绍init,因此我需要在不使用init的情况下完成.
如果这会导致任何不良行为,我很好奇.我运行了一个测试用例并没有出现任何错误,所以我认为它没问题(虽然可能不是很好的做法).只是想知道python如何处理我认为应该存在的问题?
with open("somefile.txt","r") as fileinfo:
fileinfo = fileinfo.readlines()
print fileinfo
Run Code Online (Sandbox Code Playgroud)
我认为覆盖"fileinfo"会导致退出with语句的问题(引发一些关于无法将.close()列表的错误).with语句是否保留文件引用的本地副本?谢谢!
我有一份清单
list1 = [0,1,0,0]
Run Code Online (Sandbox Code Playgroud)
如何创建打印"失败!"的if语句 如果列表中有"1"但是否则继续?
其他例子
list2 = [1,1,0,0]
list3 = [0,0,0,0]
Run Code Online (Sandbox Code Playgroud)
列表中可以有更多或更少的整数.
python ×11
list ×2
c++ ×1
class ×1
decorator ×1
dictionary ×1
for-loop ×1
if-statement ×1
import ×1
indexing ×1
matplotlib ×1
nested ×1
numpy ×1
opencv ×1
optimization ×1
python-2.7 ×1
scope ×1
size ×1