遍历2d数组Python

时间:2019-09-25 19:41:51

标签: python arrays python-3.x multidimensional-array

我对某些事情有些困惑,我在遍历一个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”作为输出。我以为更改计数时会以为它正在循环遍历的范围。

请向我解释为什么我错了

预先感谢您,对于无法很好地解释这一点,我们深表歉意。

4 个答案:

答案 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)