在Python 3中,可以格式化一个字符串,如:
"{0}, {1}, {2}".format(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
但是如何格式化字节?
b"{0}, {1}, {2}".format(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
加油AttributeError: 'bytes' object has no attribute 'format'.
如果没有format字节方法,如何格式化或"重写"字节?
Python具有heapq实现堆数据结构的模块,它支持一些基本操作(push,pop).
如何从O(log n)中的堆中删除第i个元素?是否可以使用heapq或者我必须使用其他模块?
请注意,文档底部有一个示例:http: //docs.python.org/library/heapq.html ,它提出了一种可能的方法 - 这不是我想要的.我想要删除元素,而不仅仅是标记为删除.
如何在Python中动态创建函数?
我在这里看到了一些答案,但我找不到一个可以描述最常见情况的答案.
考虑:
def a(x):
return x + 1
Run Code Online (Sandbox Code Playgroud)
如何即时创建这样的功能?我需要compile('...', 'name', 'exec')吗?那么呢?从编译步骤创建一个虚函数并替换它的代码对象?
或者我应该使用types.FunctionType?怎么样?
我想自定义一切:参数的数量,它们的内容,函数体中的代码,结果,...
请问,你知道一个提供可变字符串的Python库吗?谷歌的结果令人惊讶地回归.我找到的唯一可用的库是http://code.google.com/p/gapbuffer/,它在C中,但我更喜欢用纯Python编写.
编辑:感谢您的回复,但我正在追求一个高效的库.也就是说,''.join(list)可能有用,但我希望有更优化的东西.此外,它必须支持常规字符串常用的东西,如正则表达式和unicode.
array.array('B')和之间有什么区别bytearray?
from array import array
a = array('B', 'abc')
b = bytearray('abc')
a[0] = 100
b[0] = 'd'
print a
print b
Run Code Online (Sandbox Code Playgroud)
有没有记忆或速度差异?每个人的首选用例是什么?
我看到经常推荐使用Moller和Trumbore的Fast Minimum Storage Ray/Triangle Intersection.
问题是,我不介意预先计算和存储任何数量的数据,只要它加速交叉点.
所以我的问题是,不关心记忆,做射线三角交叉的最快方法是什么?
编辑:我不会移动三角形,即它是一个静态场景.
请考虑以下代码:
from weakref import ref
class Klass(object):
# __slots__ = ['foo']
def __init__(self):
self.foo = 'bar'
k = Klass()
r = ref(k)
Run Code Online (Sandbox Code Playgroud)
它可以工作,但当我取消注释__slots__它TypeError: "cannot create weak reference to 'Klass' object"在Python 2.6下打破.
请问,有没有人知道这是否是Python的固有限制,__slots__或者它是否是一个错误?如何解决它?
考虑这种解决子集和问题的方法:
def subset_summing_to_zero (activities):
subsets = {0: []}
for (activity, cost) in activities.iteritems():
old_subsets = subsets
subsets = {}
for (prev_sum, subset) in old_subsets.iteritems():
subsets[prev_sum] = subset
new_sum = prev_sum + cost
new_subset = subset + [activity]
if 0 == new_sum:
new_subset.sort()
return new_subset
else:
subsets[new_sum] = new_subset
return []
Run Code Online (Sandbox Code Playgroud)
我从这里得到它:
http://news.ycombinator.com/item?id=2267392
还有一条评论说,有可能使其"更有效".
怎么样?
此外,还有其他方法可以解决问题,至少与上述方法一样快吗?
编辑
我对任何会导致加速的想法感兴趣.我发现:
https://en.wikipedia.org/wiki/Subset_sum_problem#cite_note-Pisinger09-2
提到线性时间算法.但我没有纸,也许你,亲爱的人,知道它是如何运作的吗?也许是一个实现?也许完全不同的方法?
编辑2
现在有一个跟进:
Pisinger快速解决子集和算法
如何将"32位有符号定点数(16.16)"转换为浮点数?
是否(fixed >> 16) + (fixed & 0xffff) / 65536.0确定?-2.5怎么样?和-0.5?
还是fixed / 65536.0正确的方法?
(PS:无论如何,签名定点"-0.5"在内存中是怎样的?)
最近我看到一篇关于使用SAT解决难题的Reddit文章[1].这让我对这个"SAT"的事情非常好奇.我阅读了维基百科的文章,但我想请你们中的某些人以更多的外行术语为我解释.
什么是SAT,它有什么用?它可以用于遍历树结构吗?用于解析文本?换线[2]?对于垃圾箱包装[3]?这是一种优化技术吗?
在相关的说明中,我读到NP与P是关于选择哪个数字的集合为零而不是检查某些数字是否总和为零 - SAT是否与此相关?
[1] http://www.reddit.com/r/programming/comments/pxpzd/solving_hexiom_really_fast_with_a_sat_solver/