插入两个字符串的最pythonic方式

发布于 2021-01-29 19:25:47

将两个字符串网格化的最Python方式是什么?

例如:

输入:

u = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
l = 'abcdefghijklmnopqrstuvwxyz'

输出:

'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
关注者
0
被浏览
85
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    对我来说,最pythonic *的方式是以下代码,它 几乎做同样的事情, 但是使用+运算符来连接每个字符串中的各个字符:

    res = "".join(i + j for i, j in zip(u, l))
    print(res)
    # 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
    

    它也比使用两个join()调用更快:

    In [5]: l1 = 'A' * 1000000; l2 = 'a' * 1000000
    
    In [6]: %timeit "".join("".join(item) for item in zip(l1, l2))
    1 loops, best of 3: 442 ms per loop
    
    In [7]: %timeit "".join(i + j for i, j in zip(l1, l2))
    1 loops, best of 3: 360 ms per loop
    

    存在更快的方法,但是它们常常使代码模糊。

    注: 如果两个输入字符串是 相同的长度,则较长的一个将被截断,
    zip
    停在较短字符串的结尾迭代。在这种情况下,zip应该使用模块中的
    zip_longest

    izip_longest
    在Python
    2中)而不是一个itertools来确保两个字符串都已用尽。



    引用 Python之禅可读性很重要
    Pythonic =对我而言
    可读性* ;i + j至少对于我的眼睛来说,更容易从视觉上进行解析。



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看