每次迭代为单个变量分配不同的值
Assignment of Different Values to Single Variable each Iteration
有一个列表s
和两个变量m
和n
:
s = [3, 'abc', '123', 'def', '456', 'ghi', '789']
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'
到目前为止我尝试了什么 -
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
def
123
456
def
ghi
而不是
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]
必须 小于或等于 (len(s) -1)/2
>>> s = [3, 'abc', '123', 'def', '456', 'ghi', '789']
>>> for i in range(1, s[0]*2, 2):
print(s[i])
print(s[i+1])
abc
123
def
456
ghi
789
此范围的参数是:
- 第一个索引 = 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 必须两两递增,另一方面,只需要其中一个,因为 j 的值始终为 i + 1。
当你让它在一个变量 == 0 的地方工作时很方便。然后分配 m 和 n 你可以按照下面的例子理解:
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
您可以增加所需的迭代次数。
有一个列表s
和两个变量m
和n
:
s = [3, 'abc', '123', 'def', '456', 'ghi', '789']
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'
到目前为止我尝试了什么 -
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
def
123
456
def
ghi
而不是
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]
必须 小于或等于 (len(s) -1)/2
>>> s = [3, 'abc', '123', 'def', '456', 'ghi', '789']
>>> for i in range(1, s[0]*2, 2):
print(s[i])
print(s[i+1])
abc
123
def
456
ghi
789
此范围的参数是:
- 第一个索引 = 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 必须两两递增,另一方面,只需要其中一个,因为 j 的值始终为 i + 1。
当你让它在一个变量 == 0 的地方工作时很方便。然后分配 m 和 n 你可以按照下面的例子理解:
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
您可以增加所需的迭代次数。