python错误typeerror:'int'对象不可迭代

时间:2016-01-04 18:21:07

标签: python python-2.7

我的代码需要一些帮助,我在尝试时遇到错误:

if int(pos_X) == 375:
   data = prog_id
   print data
   index_get = int(prog_index)

   for i in index_get:
      #test = data[i]
      print i

错误是跳到这一行:

for index in index_get:

错误:TypeError:'int'对象不可迭代

以下是index_get的输出:

18:17:59 T:5172  NOTICE: [0, 1, 2, 3, 4, 5, 6]

这是我想要实现的目标:

18:17:59 T:5172  NOTICE: [0, 1, 3, 5, 6]

以下是代码:

program_index_ = list()

for elem in program_button:
    progId.append(elem.getId())
    posX.append(elem.getX())
    posY.append(elem.getY())
progId = map(str, progId)
posX = map(str, posX)
posY = map(str, posY)

for channel in channels:
    if stop_date is not None:
        if start_time <> current_time < stop_time:
            if current_program_length >= 30:
                program_index = self.program_index
                self.program_remaining = True
            program_index_.append(program_index)
        self.program_index += 1

        if self.program_index == 7:
           program_button = [elem.control for elem in self.program_buttons]
           progId = list()
           posX = list()
           posY = list()

           for elem in program_button:
               progId.append(elem.getId())
               posX.append(elem.getX())
               posY.append(elem.getY())
           progId = map(str, progId)
           posX = map(str, posX)
           posY = map(str, posY)

           for pos_X, pos_Y, prog_id, prog_index in izip_longest(posX, posY, progId, program_index_, fillvalue=''):

               data = prog_id
               print data
               index_get = int(prog_index)

               for i in index_get:
                   #test = data[i]
                   print i

我试图使用索引从数组中获取字符串。 index_get的类型是int。

你能告诉我如何修复错误吗?

2 个答案:

答案 0 :(得分:1)

首先,python没有本机数组数据结构,它有列表。数组意味着一个固定长度的数据结构,例如你在Java或C中找到的数据结构。列表意味着一个可变长度的数据结构,例如你在这里使用的数据结构。

有许多方法可以从LIST获取字符串。     

for str in prog_index:
    print str

for i in range(len(prog_index)):
    print prog_index[i]

for i in enumerate(prog_index):
    print prog_index[i]

for i, j in enumerate(prog_index):    #just for fun
    print i, j

for i in xrange(len(lst)):            #python3 we use xrange instead of range
    print i

for str in prog_index: print str for i in range(len(prog_index)): print prog_index[i] for i in enumerate(prog_index): print prog_index[i] for i, j in enumerate(prog_index): #just for fun print i, j for i in xrange(len(lst)): #python3 we use xrange instead of range print i

还有很多方法。利用python shell在它们很小的时候交互式地解决这些问题。当事情变得更加困难时,你会为办公桌保留几个凹痕。

答案 1 :(得分:0)

您将列表转换为int。 int不可迭代。

for i in index_get:更改为for i in prog_index:

如果你担心i并不总是一个int,而是一个str,那就把它放在循环中。

for i in index_get:
    test = data[int(i)]
    print int(i)