相关疑难解决方法(0)

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

除非分配输出,否则为什么不调用Python字符串方法呢?

我尝试做一个简单的字符串替换,但我不知道为什么它似乎不起作用:

X = "hello world"
X.replace("hello", "goodbye")
Run Code Online (Sandbox Code Playgroud)

我想将单词更改hellogoodbye,因此它应该将字符串更改"hello world""goodbye world".但X仍然存在"hello world".为什么我的代码不起作用?

python string replace

133
推荐指数
1
解决办法
10万
查看次数

有什么理由不使用'+'连接两个字符串?

Python中常见的反模式是+在循环中连接一系列字符串.这很糟糕,因为Python解释器必须为每次迭代创建一个新的字符串对象,并最终获得二次时间.(在某些情况下,CPython的最新版本显然可以优化它,但是其他实现不能,因此不鼓励程序员依赖它.)''.join是正确的方法.

不过,我听人说(这里包括对堆栈溢出),你应该永远不会使用+字符串连接,而是始终使用''.join或格式字符串.我不明白为什么如果你只是连接两个字符串就是这种情况.如果我的理解是正确的,它不应该花费二次时间,我认为a + b比任何一个''.join((a, b))或更清晰,更可读'%s%s' % (a, b).

+用于连接两个字符串是一种好习惯吗?还是有一个我不知道的问题?

python anti-patterns string-concatenation

117
推荐指数
4
解决办法
18万
查看次数

Python的字符串连接与str.join的速度有多慢?

由于我在这个帖子的回答中的评论,我想知道+=运营商和运营商之间的速度差异''.join()

那两者之间的速度比较是什么?

python string list string-concatenation

61
推荐指数
3
解决办法
5万
查看次数

为什么variable1 + = variable2比variable1 = variable1 + variable2快得多?

我继承了一些Python代码,用于创建巨大的表(最多19列宽5000行).在屏幕上绘制表格需要9秒钟.我注意到使用以下代码添加了每一行:

sTable = sTable + '\n' + GetRow()
Run Code Online (Sandbox Code Playgroud)

哪里sTable是一个字符串.

我把它改为:

sTable += '\n' + GetRow()
Run Code Online (Sandbox Code Playgroud)

我注意到桌子现在出现了六秒钟.

然后我改为:

sTable += '\n%s' % GetRow()
Run Code Online (Sandbox Code Playgroud)

基于这些Python性能提示(仍然是六秒).

由于这被称为大约5000次,它突出了性能问题.但为什么会有这么大的差异呢?为什么编译器没有在第一个版本中发现问题并对其进行优化?

html python string performance python-internals

52
推荐指数
1
解决办法
1796
查看次数

Python就地操作符函数与标准操作符函数有何不同?

为什么不operator.iadd(x, y)等同z = x; z += y那有什么operator.iadd(x, y)不同operator.add(x, y)

来自文档:

许多操作都有"就地"版本.与通常的语法相比,以下函数提供了对原位运算符的更原始的访问; 例如,语句x + = y等于x = operator.iadd(x,y).另一种说法是说z = operator.iadd(x,y)相当于复合语句z = x; z + = y.

相关问题,但我对Python类方法不感兴趣; 只是内置Python类型的常规运算符.

python function operator-keyword

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

String.join()vs其他字符串连接操作

我已经快速阅读了Java8 String api文档.

现在我对String.join()方法很好奇,以便连接/连接字符串.

这种例子帮助我更好地理解了:

//Old way:
String str1 = "John";
String str2 = "Doe";
String result = str1 + " " +str2;
//or by using str1.concat(str2);

//New way:
String result = String.join(" ", str1, str2);
Run Code Online (Sandbox Code Playgroud)

不过,我不明白应该使用哪一个.这两个过程之间是否有任何性能或其他差异.

任何帮助将不胜感激.

java string java-8

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

在变量赋值中使用换行符

我正在用 python 做一些事情,我有几个由很长的公式计算的变量。我在这个网站上做了一些搜索,我发现 python 允许隐式换行,这对我来说是一个解决方案,因为我可以将公式扩展到多行: 换行

现在,我一直在以不同的方式工作。让我举个例子,如果 A 由以下公式给出:

A = b + c + d + e
Run Code Online (Sandbox Code Playgroud)

我会将其编码为:

A = b + c
A += d + e
Run Code Online (Sandbox Code Playgroud)

我想知道什么是首选方法。与我当前的方法相比,使用隐式换行是否有计算优势?

python python-3.x

2
推荐指数
1
解决办法
868
查看次数