Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过4个索引同时迭代_Python_Python 3.x_Loops_For Loop_Iteration - Fatal编程技术网

Python 通过4个索引同时迭代

Python 通过4个索引同时迭代,python,python-3.x,loops,for-loop,iteration,Python,Python 3.x,Loops,For Loop,Iteration,我编写了一个代码,通过多个索引和反向顺序,通过字符串或列表进行迭代,2个向前,2个向后。 但是,由于在迭代1和迭代3中对for循环进行了范围限制,我无法获得最终的char或list元素。 代码如下: mix = 'fdsfef232' for i in range(len(mix)-1): print('Iter 1:>>>',mix[i],'\tIter 2:>>>',mix[i+1],'\tIter 3:>>>',mix[-1-i

我编写了一个代码,通过多个索引和反向顺序,通过字符串或列表进行迭代,2个向前,2个向后。 但是,由于在迭代1和迭代3中对for循环进行了范围限制,我无法获得最终的char或list元素。 代码如下:

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都能到达终点?
感谢

已给出模块
集合的有效答案
,这里有一个没有
导入

基本上,考虑到输入字符串的长度限制,首先计算索引,然后在到达末尾时进行换行,例如:

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])

感谢Ilya Rusin,我测试了这段代码,但是迭代没有通过所有字符串,从它们的位置一直到最后。不过,我会检查一个关于集合deque的教程。我写这个例子很快,需要一些更正。如果我能找到一个更优雅的方法来解决这个问题,我会编辑这篇文章。谢谢,埃德温,这就是我需要的。
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