我编写了一个代码,通过多个索引以相反的顺序遍历一个字符串或列表,2 个向前,2 个向后。 但是,由于迭代 1 和迭代 3 中 for 循环的范围限制,我无法获得最终的 char 或列表元素。 这是代码:
mix = 'fdsfef232'
for i in range(len(mix)-1):
print('Iter 1:>>>',mix[i],'\tIter 2:>>>',mix[i+1],'\tIter 3:>>>',mix[-1-i],'\tIter 4:>>>',mix[-2-i])
这是输出:
Iter 1:>>> f Iter 2:>>> d Iter 3:>>> 2 Iter 4:>>> 3
Iter 1:>>> d Iter 2:>>> s Iter 3:>>> 3 Iter 4:>>> 2
Iter 1:>>> s Iter 2:>>> f Iter 3:>>> 2 Iter 4:>>> f
Iter 1:>>> f Iter 2:>>> e Iter 3:>>> f Iter 4:>>> e
Iter 1:>>> e Iter 2:>>> f Iter 3:>>> e Iter 4:>>> f
Iter 1:>>> f Iter 2:>>> 2 Iter 3:>>> f Iter 4:>>> s
Iter 1:>>> 2 Iter 2:>>> 3 Iter 3:>>> s Iter 4:>>> d
Iter 1:>>> 3 Iter 2:>>> 2 Iter 3:>>> d Iter 4:>>> f
如何确保 Iter 1 和 Iter 3 都到达字符串的末尾? 谢谢
最佳答案
已经给出模块 collections
的有效答案,这里是没有 import
的答案。
基本上首先计算你的索引,给定输入字符串的长度限制,并在到达末尾时回绕,示例:
mix = 'fdsfef232'
for i in range(len(mix)):
a = i
b = 0 if (i+1) > len(mix)-1 else i+1
c = 0 if (-1-i) < (0-len(mix)-1) else -1-i
d = -1 if (-2-i) < (0-len(mix)) else -2-i
print('Iter 1:>>>',mix[a],'\tIter 2:>>>',mix[b],'\tIter 3:>>>',mix[c],'\tIter 4:>>>',mix[d])
输出:
Iter 1:>>> f Iter 2:>>> d Iter 3:>>> 2 Iter 4:>>> 3
Iter 1:>>> d Iter 2:>>> s Iter 3:>>> 3 Iter 4:>>> 2
Iter 1:>>> s Iter 2:>>> f Iter 3:>>> 2 Iter 4:>>> f
Iter 1:>>> f Iter 2:>>> e Iter 3:>>> f Iter 4:>>> e
Iter 1:>>> e Iter 2:>>> f Iter 3:>>> e Iter 4:>>> f
Iter 1:>>> f Iter 2:>>> 2 Iter 3:>>> f Iter 4:>>> s
Iter 1:>>> 2 Iter 2:>>> 3 Iter 3:>>> s Iter 4:>>> d
Iter 1:>>> 3 Iter 2:>>> 2 Iter 3:>>> d Iter 4:>>> f
Iter 1:>>> 2 Iter 2:>>> f Iter 3:>>> f Iter 4:>>> 2
关于python - 通过 4 个索引同时迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48645464/