Python 交换序列两位数

Python swapping sequence double digits

运行良好的代码示例

s="abc123"
swap_seq="103254"
swapped=''.join([s[int(i)] for i in swap_seq])
if s[0].isupper(): swapped.capitalize()
print (swapped)

但是我有大量的字符需要精确地交换 18,只是想知道如何进行两位数

下面是我尝试使用它的示例。

s="0123456789abcdefgh"
swap_seq="1 0 3 2 5 4 7 6 9 8 11 10 13 12 15 14 17 16"
swapped=''.join([s[int(i)] for i in swap_seq])
if s[0].isupper(): swapped.capitalize()
print (swapped)

已尝试 [“0”、“1”、“2”] 但是输入的长度必须完全相同,否则我会出错。

我想要做的是让用户输入最多 18 个字符,代码将交换 letters/numbers。

swap_seq 不应该是一个字符串。这是一个索引值序列,所以使用更合适的数据类型,列出一个整数列表:

swap_seq=[1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14, 17, 16]
swapped=''.join([s[i] for i in swap_seq])

我想这就是你想要的,没试过。我阅读您的代码的方式是,您使用 swap_seq 中概述的序列对 s 进行索引,因此 split 将为您提供位置列表,而 i 则不是 [ 中的每个可能字符=11=],其中包含空格,现在将是去掉空格的字符串列表。

swapped=''.join([s[int(i)] for i in swap_seq.split()])