将一个字符串添加到另一个字符串

1 投票
4 回答
1176 浏览
提问于 2025-04-16 00:03

我现在遇到了一个问题:
我想要高效地把字符串添加到其他字符串上,所以我查了很多方法和技巧,找到了一个“最快”的方法。
但是我完全搞不懂它到底是怎么工作的:

def method6():
    return ''.join([`num` for num in xrange(loop_count)])

来自 这个链接(方法6)

特别是 ([`num` for num in xrange(loop_count)]) 让我完全困惑。

4 个回答

2

括号里的那部分是一个列表推导式,可以说是Python中最强大的功能之一。它通过迭代生成一个列表。你可以查一下相关的文档来了解更多。用反引号把num转换成字符串并不是个好主意,建议用str(num)或者类似的方法。

join()是字符串类中的一个方法。它接受一个字符串列表,并返回一个由这些字符串组成的单一字符串,字符串之间用“self”(也就是调用这个方法的字符串)来分隔。这里的诀窍是,join()是直接从字符串字面量''调用的,这在Python中是允许的。这段代码的作用是生成一个字符串,内容是xrange(loop_count)中每个元素的字符串形式,并且没有任何分隔。

6

这是一个列表推导式,它使用反引号来进行repr转换。不要这样做。反引号已经被淘汰,并且在Python 3中被移除了。更有效且符合Python风格的方法是根本不创建中间列表,而是使用生成器表达式:

''.join(str(num) for num in xrange(loop_count))        # use range in py3k
2

xrange() 是一个比 range() 更快的版本,它是用 C 语言写的。

反引号表示法 -- num,可以把一个变量转成字符串,和 str(num) 是一样的。

[x for x in y] 叫做列表推导式,简单来说就是一种可以用一行代码写的循环,它的结果是一个列表。所以总的来说,你的代码在意思上和下面的代码是一样的,但运行得更快,因为列表推导式和 xrange 比 for 循环和 range 更快:

z = []
for i in range(loop_count):
   z.append(str(i))
return "".join(z)

撰写回答