我对某些事情有些困惑,我在遍历一个2d数组时只是在尝试以下代码时进行实验:
result = [["Lucas","5"],["Tim","2"]]
count = 0
for line in result:
for item in result[count]:
print(item)
count = count + 1
我想这样做是给我一个Lucas
然后是2
的结果,因为它将转到第一个项目,然后第二个for
循环将通过子列表,打印result[0][0]
,但是一旦到达子列表的第一项,它将增加计数到1,这意味着它将在下一个显示result[1][1]
,因为它在新范围内,但是循环然后转到它所作用域的第二项。
但是,这将产生“ Lucas”,“ 5”作为输出。我以为更改计数时会以为它正在循环遍历的范围。
请向我解释为什么我错了
预先感谢您,对于无法很好地解释这一点,我们深表歉意。
答案 0 :(得分:1)
这样做的时候
for item in result[count]:
表达式result[count]
在循环开始时仅计算一次。它不会在每次循环中都进行评估,因此重新分配count
对后续迭代没有影响。大致相当于:
temp = result[count]
for item in temp:
请记住,使用for
循环的值可能是生成器表达式。这些无法索引,它们只是计算一系列值。因此,每次重新评估它们都没有意义。
答案 1 :(得分:0)
> dput(head(df2,10))
structure(list(Reaction = c("k1", "k2", "k3", "k2", "k3", "k4",
"k5", "k6", "k7", "k8"), R1c = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1
), R1 = c("HOCl", "OCl-", "NH2Cl", "NHCl2", "H2O2", "HO2-", "NH2Cl",
"NH2Cl", "NH2Cl", "NHCl2"), R2c = c("", "", "", "", "", "", "1",
"1", "1", "1"), R2 = c("", "", "", "", "", "", "$OH", "$Cl",
"$Cl2-", "$OH"), R3c = c("", "", "", "", "", "", "", "", "",
""), R3 = c("", "", "", "", "", "", "", "", "", ""), P1c = c("1",
"1", "1", "1", "2", "1", "1", "1", "1", "1"), P1 = c("$OH", "O$-",
"$NH2", "$NHCl", "$OH", "$OH", "$NHCl", "$NHCl", "$NHCl", "NCl2$"
), P2c = c("1", "1", "1", "1", "", "1", "1", "1", "2", "1"),
P2 = c("$Cl", "$Cl", "$Cl", "$Cl", "", "O$-", "OH-", "Cl-",
"Cl-", "H2O"), P3c = c("", "", "", "", "", "", "", "", "1",
""), P3 = c("", "", "", "", "", "", "", "", "H+", "")), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))
将遍历顶级数组,因此这里有2条记录:for line in result:
和["Lucas","5"]
然后:
["Tim","2"]
将遍历2条记录中每条的每个项目,因此
for item in result[count]:
将显示4个项目,顺序为print(item)
。
不需要计数,它在这里没有任何用途,无论如何都不会被任何for循环使用。
答案 2 :(得分:0)
如果您坚持使用for循环,也可以使用
result = [["Lucas","5"],["Tim","2"]]
count = 0
for line in range(len(result)):
for item in result[line]:
print(item)
count = count + 1
返回:卢卡斯 5 提姆 2
答案 3 :(得分:-2)
不需要count
变量。 result[count]
为您提供了第一项,因为您设置了count = 0
,因此您实际上只是在内部循环中遍历["Lucas", "5"]
。您可以只使用两个for...in
循环
result = [["Lucas","5"],["Tim","2"]]
count = 0
for line in result:
for item in line:
print(item)