gpt4 book ai didi

python - 交换字符串中的每一对字符

转载 作者:太空狗 更新时间:2023-10-30 00:29:34 25 4
gpt4 key购买 nike

例如,有字符串:

abcdefghijklmnopqrstuvwxyz

结果应该是这样的:

badcfehgjilknmporqtsvuxwzy

我该怎么做呢?

想到了一些效率不是很高的东西,比如:

s = str(range(ord('a'), ord('z') + 1))
new_s = ''
for i in xrange(len(s)):
if i != 0 and i % 2 == 0:
new_s += '_' + s[i]
else:
new_s += s[i]
# Now it should result in a string such as 'ab_cd_ef_...wx_yz'
l = new_s.split('_')
for i in xrange(len(l)):
l[i] = l[i][::-1]
result = str(l)

有没有更好的办法?某种更有效或更通用的方式,因此我也可以更轻松地使用 3 个字母来解决它?

最佳答案

您可以使用 zip() 函数,它会返回一个元组列表作为 [(b,a), (d,c), ...] 和将 .join() 方法应用于元组和列表的元素。

a = "abcdefghijklmnopqrstuvwxyz"
# a[::2] = "acegikmoqsuwy"
# a[1::2] = "bdfhjlnprtvx"
print "".join("".join(i) for i in zip(a[1::2], a[::2]))
>>> badcfehgjilknmporqtsvuxwzy

编辑:按照@Ashwini 和@TigerhawkT3 的建议处理奇数长度字符串的情况,您可以将代码更改为:

print "".join("".join(i) for i in zip(a2, a1)) + a[-1] if len(a)%2 else '' 

关于python - 交换字符串中的每一对字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30628176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com