小编oob*_*boo的帖子

将字符串拆分为具有多个单词边界分隔符的单词

我认为我想做的是一项相当普遍的任务,但我在网上找不到任何参考.我有带标点符号的文字,我想要一个单词列表.

"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 string split

631
推荐指数
12
解决办法
63万
查看次数

Python非本地语句

Python nonlocal语句做了什么(在Python 3.0及更高版本中)?

官方Python网站上没有文档,help("nonlocal")也没有用.

python closures global python-nonlocal

293
推荐指数
6
解决办法
10万
查看次数

Python在列表上追加()与+运算符,为什么这些会给出不同的结果?

为什么这两个操作(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 list append nested-lists

100
推荐指数
5
解决办法
9万
查看次数

Python中对象的布尔值

我们知道,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".

python boolean

34
推荐指数
2
解决办法
2万
查看次数

在Python中使用eval?

eval()Python中有一个函数我在玩游戏时偶然发现.我不能想到需要这个功能的情况,除了可能是语法糖.谁能举个例子?

python eval dynamic

23
推荐指数
5
解决办法
4万
查看次数

查找未排序列表的第N项而不排序列表

嘿.我有一个非常大的数组,我想找到第N个最大的值.平凡我可以对数组进行排序,然后取第N个元素,但我只对一个元素感兴趣,所以可能有一个比排序整个数组更好的方法...

python arrays sorting

20
推荐指数
2
解决办法
2万
查看次数

Python内存模型

我有一个非常大的列表假设我这样做(是的,我知道代码非常单一,但为了示例的缘故......):

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中,第二个选项确实更节省内存...

有没有人对此有解释?

python memory arrays model

10
推荐指数
2
解决办法
3328
查看次数

关于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()?

谢谢!

java polymorphism casting

8
推荐指数
3
解决办法
1万
查看次数

非标准可选参数默认值

我有两个功能:

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会有另一个值.

python optional-arguments

4
推荐指数
1
解决办法
9638
查看次数

在Python中的文件中存储巨大的哈希表

嘿.我有一个我想要记忆的功能,但它有太多可能的值.有没有方便的方法将值存储在文本文件中并从中读取?例如,在文本文件中存储预先计算的素数列表,最多10 ^ 9?我知道从文本文件中读取的速度很慢,但如果数据量非常大,则没有其他选择.谢谢!

python hashtable file

4
推荐指数
2
解决办法
4471
查看次数