如何在for循环中分配索引?

时间:2019-04-06 11:23:09

标签: python

我想用名称打印130以下的数字。

我有这样的数据框

name = ["a","b","c","d","e","f","g","h"]
h =    [125,120,135,115,115,130,145,130]

我尝试使用我的代码

for i in h:
    if i < 130:
        un_130 = [name[i], h[i]]
        #print(i, un_130)
        print(i)

当我打印后,结果是正确的

125
120
115
115

但是当我尝试使用print(i, un_30)中的名称打印时,出现索引错误。

有什么建议吗?

3 个答案:

答案 0 :(得分:8)

您可以使用zip()并行迭代:

for i, n in zip(h, name):
  if i < 130:
    print(i, n)

(我不太喜欢变量的命名,尤其是i,但我选择与问题中使用的命名保持一致。)

答案 1 :(得分:1)

好吧,所以它与@vulpex所提到的不太像python一样,但是您可以像其他编程语言一样简单地使用python的range方法进行迭代来模拟for循环的行为:

for i in range(0, len(h), 1):
if h[i] < 130:
    un_130 = [name[i], h[i]]
    print(i, un_130)
    print(i)

但是,其他答案中提到的其他功能(例如枚举或zip)通常更适合在python中使用。

答案 2 :(得分:0)

您可以使用枚举

for idx,i in enumerate(h):
    if i < 130:
        print(name[idx],h[idx])

注意:只要nameh的长度相同