Python 每次迭代为单个变量分配不同的值

Python 每次迭代为单个变量分配不同的值,python,list,for-loop,while-loop,variable-assignment,Python,List,For Loop,While Loop,Variable Assignment,有一个列表s和两个变量m和n: s[0]是int类型。它表示为将以下值分配给m和n而应进行迭代的次数。 前任: 这个s列表应该迭代3次,如s[0]所示。每次迭代都应该从s到m和n分配一个新值 第一次迭代,应分配m和n m = 'abc' n = '123' 第二次迭代 m = 'def' n = '123'` m = 'ghi' n = '789' 第三次迭代 m = 'def' n = '123'` m = 'ghi' n = '789' 到目前为止我都试过了- s

有一个列表s和两个变量m和n:

s[0]是int类型。它表示为将以下值分配给m和n而应进行迭代的次数。 前任: 这个s列表应该迭代3次,如s[0]所示。每次迭代都应该从s到m和n分配一个新值

第一次迭代,应分配m和n

m = 'abc'
n = '123'
第二次迭代

m = 'def' 
n = '123'` 
m = 'ghi' 
n = '789' 
第三次迭代

m = 'def' 
n = '123'` 
m = 'ghi' 
n = '789' 
到目前为止我都试过了-

s = [3, 'abc', '123', 'def', '456', 'ghi', '789']

count = 0
i = 0
j = 2
while count < s[0]:
     m = s[i+1]
     n = s[j+1]
     print(m)
     print(n)
     count += 1
     i += 1
     j += 1
而不是

abc 
123
def
456
ghi
789

请帮助我构建所需的逻辑以完成此任务。

您只需使用迭代器,就不必管理索引:

it = iter(s)
for _ in range(next(it)):
    m, n = next(it), next(it)
    print(m)
    print(n)
或使用索引访问:

i, j = 1, 2
for _ in range(s[0]):
    m, n = s[i], s[j]
    print(m)
    print(n)
    i, j = i+2, j+2

我认为我们可以简化这个过程,在循环中,循环计数器等于s[0]*2。这样我们可以将循环步骤定义为2。但这意味着s[0]必须小于或等于lens-1/2

此范围的参数包括:

第一个索引=1 最大索引=6 每一步的增量=2 首先循环得到i=1,我们打印索引1和2,然后索引变成3,我们打印3和4,依此类推。

您可以这样做:

s = [3, 'abc', '123', 'def', '456', 'ghi', '789']
i = 1
count=1
while  count<=s[0]:
      m = s[i]
      n = s[i+1]
      print(m)
      print(n)
      i += 2
      count+=1

指数i,j必须以2乘以2的方式递增,另一方面,只需要其中一个,因为j的值在任何时候都是i+1。

当一个变量为==0时,它工作起来很方便。然后,要分配m和n,您可以遵循并理解以下示例:

count = 0
for itervar in [3, 41, 12, 9, 74, 15]:
    count = count + 1
print 'Count: ', count
然后


您可以增加所需的迭代次数。

我认为您在初始开场白中写错了第二次迭代。n=456?不管怎样,只要关注一个变量一秒钟,比如m。你能写出/大声说出m在每次迭代中使用的索引吗?一旦你这样做了,看看你的变量是递增的。i+=1?你看到问题了吗?是的,我理解你的逻辑。所以我设置了I=1和j=2,然后在两次迭代之后超出了范围。
count = 0
for itervar in [3, 41, 12, 9, 74, 15]:
    count = count + 1
print 'Count: ', count
total = 0
for itervar in [3, 41, 12, 9, 74, 15]:
    total = total + itervar
print 'Total: ', total