Python 每次迭代为单个变量分配不同的值
有一个列表s和两个变量m和n: s[0]是int类型。它表示为将以下值分配给m和n而应进行迭代的次数。 前任: 这个s列表应该迭代3次,如s[0]所示。每次迭代都应该从s到m和n分配一个新值 第一次迭代,应分配m和nPython 每次迭代为单个变量分配不同的值,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
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