当前位置: 首页 > 面试题库 >

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

翟俊茂
2023-03-14
问题内容

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

例如:

输入:

u = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
l = 'abcdefghijklmnopqrstuvwxyz'

输出:

'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'

问题答案:

对我来说,最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至少对于我的眼睛来说,更容易从视觉上进行解析。



 类似资料:
  • 问题内容: 给出以下无害的小清单: 我的目标是使用以下方法之一以Python方式串联小恶魔: A. plain ol’string函数来完成工作,简短,没有导入 B.lambda,lambda,lambda C.全球化(什么都不做,什么都导入) 请提出其他蟒蛇般的方法来完成这项宏大的任务。 请对解决方案进行排名(python级别),并对解决方案进行评分,并给出简洁的解释。 在这种情况下,最Pyth

  • 问题内容: 我正在从文件中读取行,然后使用它们。每行仅由浮点数组成。 我整理了几乎所有内容,将这些行转换为数组。 我基本上是这样做的(pseudopython代码) 这行得通,但是似乎有点违反直觉和反pythonic,我想知道是否有更好的方法来处理来自文件的输入,以使最后有一个充满浮点数的数组。 问题答案: 快速回答: 如果您经常处理此类数据,csv模块将有所帮助。 如果您感到疯狂,甚至可以使用完

  • 问题内容: 有没有一种快速的方法来删除Swift中String中的最后两个字符?我看到有一个简单的方法来删除最后一个字符作为明确指出这里。您知道如何删除最后两个字符吗?谢谢! 问题答案: 更新: Xcode 9•Swift 4或更高版本 字符串现在符合RangeReplaceableCollection,因此您可以直接在字符串中使用收集方法dropLast,因此不再需要扩展。唯一的区别是它返回一个

  • 我需要从变量中选择最后两个字符,无论是数字还是字母。 例如: 我想显示变量中字符串的最后两个字母。

  • 问题内容: 我有一个很长的查询。我想在中将其分成几行。用做到这一点的一种方法是使用几个句子,然后将它们与一个+运算符连接起来(我知道,这可能不是最有效的方法,但是我并不真正关心此阶段的性能,只是代码的可读性) 。例: 我尝试在Python中做类似的事情,但是没有用,所以我过去常常拆分长字符串。但是,我不确定这是否是唯一/最佳/最佳的方法。看起来很尴尬。实际代码: 问题答案: 你在谈论多行字符串吗?

  • 本文向大家介绍java取两个字符串的最大交集,包括了java取两个字符串的最大交集的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java取两个字符串的最大交集的实现方法,分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Java程序设计有所帮助。