什么时候对象或其他东西在给定的编程语言中被称为"第一类",为什么?他们与不同的语言有什么不同?
编辑.当一个人说"一切都是对象"时(比如Python),他的确意味着"一切都是一流的"吗?
最近我写了一个函数来生成具有非平凡约束的某些序列.这个问题伴随着一种自然的递归解决方案.现在碰巧,即使对于相对较小的输入,序列也是几千个,因此我宁愿使用我的算法作为生成器而不是使用它来填充具有所有序列的列表.
这是一个例子.假设我们想用递归函数计算字符串的所有排列.以下天真算法需要额外的参数'storage',并在找到时添加一个置换:
def getPermutations(string, storage, prefix=""):
if len(string) == 1:
storage.append(prefix + string) # <-----
else:
for i in range(len(string)):
getPermutations(string[:i]+string[i+1:], storage, prefix+string[i])
storage = []
getPermutations("abcd", storage)
for permutation in storage: print permutation
Run Code Online (Sandbox Code Playgroud)
(请不要关心效率低下,这只是一个例子.)
现在我想将我的函数转换为生成器,即生成排列而不是将其附加到存储列表:
def getPermutations(string, prefix=""):
if len(string) == 1:
yield prefix + string # <-----
else:
for i in range(len(string)):
getPermutations(string[:i]+string[i+1:], prefix+string[i])
for permutation in getPermutations("abcd"):
print permutation
Run Code Online (Sandbox Code Playgroud)
此代码不能正常工作(该函数的行为像一个空发生器).
我错过了什么吗?有没有办法将上述递归算法转换为生成器而不用迭代算法替换它?
Python全局解释器锁的功能究竟是什么?编译为字节码的其他语言是否采用类似的机制?
在给定字符集出现之前拆分字符串的pythonic方法是什么?
例如,我希望'TheLongAndWindingRoad'
在任何大写字母的出现时分割
(可能除了第一个),并获得
['The', 'Long', 'And', 'Winding', 'Road']
.
编辑:它也应该拆分单个事件,即从'ABC'
我想获得
['A', 'B', 'C']
.
我在Linux上使用Python 2.6.最快的方法是什么:
确定哪个分区包含给定目录或文件?
例如,假设它/dev/sda2
已安装在/home
,并/dev/mapper/foo
已安装/home/foo
.从字符串"/home/foo/bar/baz"
我想恢复这对("/dev/mapper/foo", "home/foo")
.
然后,获取给定分区的使用情况统计信息?例如,给定/dev/mapper/foo
我想获得分区的大小和可用的可用空间(以字节或大约以兆字节为单位).
假设我在matplotlib中有两个数字,每个数字有一个数字:
import matplotlib.pyplot as plt
f1 = plt.figure()
plt.plot(range(0,10))
f2 = plt.figure()
plt.plot(range(10,20))
Run Code Online (Sandbox Code Playgroud)
然后我一次性展示
plt.show()
Run Code Online (Sandbox Code Playgroud)
有没有办法单独显示它们,即只显示f1
?
或者更好:我如何单独管理数字,如下面的"如意"代码(不起作用):
f1 = plt.figure()
f1.plot(range(0,10))
f1.show()
Run Code Online (Sandbox Code Playgroud) 例如,假设您有一个浮点数列表,它大约是常见数量的倍数
2.468,3.700,6.1699
这大约是1.234的倍数.您如何描述这种"近似gcd",您将如何进行计算或估算呢?
与我对这个问题的回答密切相关.
language-agnostic algorithm math floating-point greatest-common-divisor
我已经看到了这两种风格的代码,我不确定一个是否比另一个更好(它只是风格问题)?你有什么建议可以选择一个而不是另一个.
//Example1
class Test {
private:
static const char* const str;
};
const char* const Test::str = "mystr";
//Example2
class Test {
private:
static const std::string str;
};
const std::string Test::str ="mystr";
Run Code Online (Sandbox Code Playgroud) 试图回答其解决方案涉及IP地址和网络掩码的另一篇文章,我陷入了简单的按位运算.
在Python中是否有一种标准方法可以进行按位AND,OR,XOR,NOT操作,假设输入为"32位"(可能为负)整数或长整数,并且结果必须在范围内为长[ 0,2**32]?
换句话说,我需要一个有效的Python对应于无符号长整数之间的C位运算.
编辑:具体问题是:
>>> m = 0xFFFFFF00 # netmask 255.255.255.0
>>> ~m
-4294967041L # wtf?! I want 255
Run Code Online (Sandbox Code Playgroud)