我认为我想做的是一项相当普遍的任务,但我在网上找不到任何参考.我有带标点符号的文字,我想要一个单词列表.
"Hey, you - what are you doing here!?"
Run Code Online (Sandbox Code Playgroud)
应该
['hey', 'you', 'what', 'are', 'you', 'doing', 'here']
Run Code Online (Sandbox Code Playgroud)
但是Python str.split()只能使用一个参数,所以在用空格分割之后,我所有的单词都带有标点符号.有任何想法吗?
Python nonlocal语句做了什么(在Python 3.0及更高版本中)?
官方Python网站上没有文档,help("nonlocal")也没有用.
为什么这两个操作(append()分别+)给出不同的结果?
>>> c = [1, 2, 3]
>>> c
[1, 2, 3]
>>> c += c
>>> c
[1, 2, 3, 1, 2, 3]
>>> c = [1, 2, 3]
>>> c.append(c)
>>> c
[1, 2, 3, [...]]
>>>
Run Code Online (Sandbox Code Playgroud)
在最后一种情况下,实际上存在无限递归.c[-1]并且c是一样的.为什么它与+操作不同?
我们知道,Python有对象的布尔值:如果一个类有一个__len__方法,它的每个实例__len__()都会返回0,它将被计算为一个布尔值False(例如,空列表).
实际上,每个可迭代的空自定义对象都被评估为False好像它出现在布尔表达式中.
现在假设我有一个foo属性类bar.我怎样才能定义它的真值,以便它会被评估True if bar % 2 == 0,False否则呢?
例如:
myfoo = foo()
myfoo.bar = 3
def a(myfoo):
if foo:
print "spam"
else:
print "eggs"
Run Code Online (Sandbox Code Playgroud)
所以,a(myfoo)应该打印"eggs".
eval()Python中有一个函数我在玩游戏时偶然发现.我不能想到需要这个功能的情况,除了可能是语法糖.谁能举个例子?
嘿.我有一个非常大的数组,我想找到第N个最大的值.平凡我可以对数组进行排序,然后取第N个元素,但我只对一个元素感兴趣,所以可能有一个比排序整个数组更好的方法...
我有一个非常大的列表假设我这样做(是的,我知道代码非常单一,但为了示例的缘故......):
n = (2**32)**2
for i in xrange(10**7)
li[i] = n
Run Code Online (Sandbox Code Playgroud)
工作良好.然而:
for i in xrange(10**7)
li[i] = i**2
Run Code Online (Sandbox Code Playgroud)
消耗大量内存.我不明白为什么 - 存储大数字需要更多位,而在Java中,第二个选项确实更节省内存...
有没有人对此有解释?
我有一个班级C.班级E扩展了它.
E e = new E();
C c = new C();
Run Code Online (Sandbox Code Playgroud)
为什么是
e = (E) c;
Run Code Online (Sandbox Code Playgroud)
进一步审查:虽然数字转换与铸造对象具有相同的语法,但是出现了一些混淆.在任何情况下,上面都没有给出编译,而是给出了运行时错误 - 所以在某些实例中可以将类转换为子类(否则代码将无法编译).任何人都可以给出上述工作的例子吗?
并且:
K extends M
K k = new K();
Run Code Online (Sandbox Code Playgroud)
((M) k).getClass()给K.这是为什么?这是更普遍的铸造M!
假设我在M和K中都执行了doIt()方法
((M) k).doIt();
Run Code Online (Sandbox Code Playgroud)
给出M或K的doIt()?
谢谢!
我有两个功能:
def f(a,b,c=g(b)):
blabla
def g(n):
blabla
Run Code Online (Sandbox Code Playgroud)
c是函数中的可选参数f.如果用户没有指定其值,程序应该计算g(b),这将是值c.但是代码没有编译 - 它说名称'b'没有定义.如何解决?
有人建议:
def g(b):
blabla
def f(a,b,c=None):
if c is None:
c = g(b)
blabla
Run Code Online (Sandbox Code Playgroud)
但这不起作用.也许用户打算c成为None,然后c会有另一个值.
嘿.我有一个我想要记忆的功能,但它有太多可能的值.有没有方便的方法将值存储在文本文件中并从中读取?例如,在文本文件中存储预先计算的素数列表,最多10 ^ 9?我知道从文本文件中读取的速度很慢,但如果数据量非常大,则没有其他选择.谢谢!