相关疑难解决方法(0)

哪个是在Python中连接字符串的首选方法?

由于Python string无法更改,我想知道如何更有效地连接字符串?

我可以这样写:

s += stringfromelsewhere
Run Code Online (Sandbox Code Playgroud)

或者像这样:

s = []
s.append(somestring)

later

s = ''.join(s)
Run Code Online (Sandbox Code Playgroud)

在写这个问题时,我发现了一篇很好的文章谈论这个话题.

http://www.skymind.com/~ocrow/python_string/

但它是在Python 2.x.中,所以问题是在Python 3中做了哪些改变?

python string concat python-3.x

325
推荐指数
10
解决办法
62万
查看次数

为什么'.join()在Python中比+ =更快?

我能够在线找到一大堆信息(在Stack Overflow和其他方面),关于如何在Python中使用++=连接它是一种非常低效和糟糕的做法.

我似乎无法找到为什么+=这么低效.除了这里提到"它在某些情况下已经优化了20%的改进"(仍然不清楚这些情况是什么),我找不到任何其他信息.

在更技术层面上发生了什么,''.join()优于其他Python串联方法?

python optimization

63
推荐指数
2
解决办法
5633
查看次数

Python中的可变字符串

请问,你知道一个提供可变字符串的Python库吗?谷歌的结果令人惊讶地回归.我找到的唯一可用的库是http://code.google.com/p/gapbuffer/,它在C中,但我更喜欢用纯Python编写.

编辑:感谢您的回复,但我正在追求一个高效的库.也就是说,''.join(list)可能有用,但我希望有更优化的东西.此外,它必须支持常规字符串常用的东西,如正则表达式和unicode.

python string mutable

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

Python中字符串连接的时间复杂度

我正在分析我的代码的复杂性.从我在网上找到的,因为字符串在python中是不可变的,字符串和字符的串联应该是O(len(string)+ 1).

现在,这是我的一段代码(简化):

word = ""
for i in range(m):
    word = char_value + word
return word
Run Code Online (Sandbox Code Playgroud)

总时间复杂度应为:

(0 + 1)+(1 + 1)+ ... + m = m(m + 1)/ 2 = O(m ^ 2)

它是否正确?

python string time-complexity

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

如何更正字符串中被特殊字符替换的元音?

所以我有一个字符串,在该字符串中,某些单词中的某些字符被其他字符替换(typo_text)。例如:“美国、德国、欧盟委员会、日本和加拿大资助测试的开发和公平推广。” 这将是正确的格式,但我得到的却是“XSX、Gxrmxny、欧盟委员会、Jxpxn 和 Cxnxdx,为结束新冠肺炎急性期所需的测试、治疗和疫苗的开发和公平推广提供资金” -19 大流行。我一直在创建一个需要for循环来纠正拼写错误的脚本:

def corrected_text(text):
    newstring=""
    for i in text:
        if i not in "aeiouAEIOU":
            newstring=newstring+i
    text=newstring
    return text
Run Code Online (Sandbox Code Playgroud)

我知道当我运行这个时,它只会从文本中删除所有元音。然而,这似乎是朝着正确方向迈出的一步,有助于纠正拼写错误并了解for基于循环的方法。

我有两个存在此问题的单词列表:

name_G7_countries = ['Canada', 'France', 'Germany', 'Italy', 'Japan', 'UK', 'USA']
mistake =  ['Cxnxdx', 'Frxncx', 'Gxrmxny', 'Xtxly', 'Jxpxn','XK', 'XSX']
Run Code Online (Sandbox Code Playgroud)

我知道使用类似的东西'Jxpxn'.replace('x', 'a')可能会起作用;但是,对于其他短语,可能不会,所以我不确定如何从这里继续。

python replace for-loop

6
推荐指数
1
解决办法
279
查看次数

字符串串联以防止两个字符串在内存中移动

为了连接两个字符串,内存管理器将尝试重新分配一个字符串的内存位置,以便另一个字符串能够适应内存中紧挨着它的另一个字符串。 /sf/answers/2380573961/迭代字符串追加的时间复杂度实际上是 O(n^2) 还是 O(n)? 如果它不能就地重新分配,那么它必须将两者都移动到一个新的内存位置。

问题是为了避免将两个字符串移动到新内存位置的这种开销,是否有一种首选的、有效的方法在 Python 中连接两个字符串。我正在考虑使用 StringIO 使其成为文本缓冲区?你怎么看?

python string concatenation

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

string += "a" 和 string = string + "a" 的时间复杂度一样吗?

在这两个语句中,我都将一个字符附加"a"到字符串中s

  1. s += "a"
  2. s = s + "a"

Python 中哪个语句的时间复杂度更好?

python time-complexity

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