python - "".join(reversed(val)) vs val[::-1]...哪个是 pythonic?

标签 python

所以根据 Python 之禅 ... 显式优于隐式 ...稀疏优于密集 ... 可读性很重要...但是 Flat 优于嵌套...那么哪个是pythonic

val = "which is pythonic?"
print("".join(reversed(val)))

print(val[::-1])

我只是一名学习 Python 的 Java 程序员,所以我发现 pythonic 的东西很有趣,因为在 Java 世界 AFAIK 中没有类似物。

最佳答案

我的妻子 Anna 给 x[::-1] 取了个绰号“火星笑脸”——我主要是向她鞠躬(以及她在培训 &c 和人类心理学研究 &c 方面的长期经验) ,在判断对大多数人来说什么是简单自然的事情时,她绝对喜欢军事笑脸。 “倒着走”——比“倒过来然后再加入”的详细说明要直接和高度抽象得多!

此外,python -mtimeit 通常可以很好地判断什么是 Pythonic:顶级 Pythonistas,多年来,当然倾向于优化他们最经常需要和使用的东西,因此非常可观的性能difference 告诉你什么是语言及其顶级实践者的“顺其自然”。按照这个分数,火星笑脸轻而易举地击败了详细的规范......:

$ python -mtimeit '"".join(reversed("hello there!"))'
100000 loops, best of 3: 4.06 usec per loop
$ python -mtimeit '"hello there!"[::-1]'
1000000 loops, best of 3: 0.392 usec per loop

数量级的性能差异不会留下太多怀疑的余地!-)

关于python - "".join(reversed(val)) vs val[::-1]...哪个是 pythonic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695385/

相关文章:

python - 用 Pandas 重新采样 python 列表

python - 下载 youtube mp3 - 元数据编码问题(python、youtube-dl、ffmpeg)

python - 将交错数据拆分为单独 channel 的 np.arrays?

Pythonic 相当于 Matlab 的 textscan

python - 实现常微分方程组的循环

python - 如何获得 timezone.now() 之前的 1 天

python - 列表乘法

python - Python 中是否可以使用 C++ 样式的日志记录宏?

python - 使用联合登录时保存用户设置

python - 为什么我不能使用 TensorFlow 一次性编码我的标签? (坏切片索引 None of type <type 'NoneType' >)