首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于特定索引后的循环,python不工作。

对于特定索引后的循环,python不工作。
EN

Stack Overflow用户
提问于 2014-10-28 14:08:35
回答 1查看 183关注 0票数 1

因此,我有一段代码,它迭代一个数据,转换为元组,然后在第一个值之后迭代每个值。昨天一切都很好,但是今天,某些行不排除第一个指数,我不知道为什么。

以下是代码:

代码语言:javascript
复制
for rows in data.itertuples():
    r = int(rows[0]) + 1
    for i in rows[1:]:
        c = rows.index(i)
        print r, i, c, int(rows.index(i)), rows

我从前2行的迭代中复制了打印。第一排工作得很好。第二行有一个问题。对于它获取row1的第一个元素,预期c将被设置为1,但它却是0。这是随机发生的,通过行的数据。有人知道为什么for循环不跳过第一个元素吗?

代码语言:javascript
复制
1 3 1 1 (0, 3, 27000, '1060', 'QMS', 'TEST', 'DAY', 'LMT')

1 1 3

1 27000 2 2 (0, 3, 27000, '1060', 'QMS', 'TEST', 'DAY', 'LMT')

1 2 27000

1 1060 3 3 (0, 3, 27000, '1060', 'QMS', 'TEST', 'DAY', 'LMT')

1 3 1060

1 QMS 4 4 (0, 3, 27000, '1060', 'QMS', 'TEST', 'DAY', 'LMT')

1 4 QMS

1 ARCA 5 5 (0, 3, 27000, '1060', 'QMS', 'TEST', 'DAY', 'LMT')

1 5 ARCA

1 DAY 6 6 (0, 3, 27000, '1060', 'QMS', 'TEST', 'DAY', 'LMT')

1 6 DAY

1 LMT 7 7 (0, 3, 27000, '1060', 'QMS', 'TEST', 'DAY', 'LMT')

1 7 LMT

**2 1 0 0 (1, 1, 3500, '1060', 'QMS', 'TEST', 'DAY', 'LMT')**

2 0 1

2 3500 2 2 (1, 1, 3500, '1060', 'QMS', 'TEST', 'DAY', 'LMT')

2 2 3500

2 1060 3 3 (1, 1, 3500, '1060', 'QMS', 'TEST', 'DAY', 'LMT')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-28 14:23:29

rows.index(i)将在rows中找到值为i的第一项。当您到达第二个rows集合时,rows[0]等于1,所以rows.index(1)是零,尽管rows[1]也等于1。

如果您只想迭代可迭代的索引和值,我建议使用枚举。

代码语言:javascript
复制
for rows in data.itertuples():
    r = int(rows[0]) + 1
    for c, i in enumerate(rows):
        #skip the first value
        if c == 0:
            continue
        #do whatever here

代码语言:javascript
复制
for rows in data.itertuples():
    r = int(rows[0]) + 1
    for c, i in enumerate(rows[1:], 1): #skip the first item implicitly
        #do whatever here
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26610435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档