微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于在列表中查找 X 的索引的 Python 练习

如何解决关于在列表中查找 X 的索引的 Python 练习

def leesFormulier(l1):
    index = 0
    lres = []
    for j in range(len(l1)):
        for k in range(0,9,2):
            if l1[j][k] == 'X':
                lres.append(index+1)
                index += 1
            else:
                index += 1
    return lres
print(leesFormulier(l1 = ['1 X 3 4 X','X 7 X X 10','11 12 13 14 15','16 17 18 19 20','21 22 23 24 25','26 27 28 29 30','31 32 33 34 35','36 37 38 39 40','41 42 43 44 X']))

result : [2,5,6,8,9]

大家好,

我正在做一个关于 Python 的练习,我必须找到可以找到“X”的位置的索引。我解决了大部分问题,但我遇到的唯一问题是最后一个无法识别的“X”。我把它放在 Pythontutor 中,在那里我可以看到,在最后一次通过 for 循环时,它转到最后一个 k for 循环,但它没有检查它,而是立即转到 j for lus 然后结束迭代并转到返回部分。我不知道我做错了什么,如果有人能帮助我,我将不胜感激。

提前致谢!

解决方法

这个问题不需要所有那些索引或嵌套循环,你可以简化很多

def lessFromulier(l1):
    lres = []
    new_string = " ".join(l1).split(" ")
    for i,letter in enumerate(new_string):
        if letter == "X":
            lres.append(i+1)
    return lres


test = [
    "1 X 3 4 X","X 7 X X 10","11 12 13 14 15","16 17 18 19 20","21 22 23 24 25","26 27 28 29 30","31 32 33 34 35","36 37 38 39 40","41 42 43 44 X",]
print(lessFromulier(test))

给出这个输出

[2,5,6,8,9,45]
,

你的输入对我来说真的很奇怪,但这里是你问题的解决方案

def leesFormulier(l1):
    index = 0
    lres = []
    for i in range(len(l1)):
        for j in range(len(l1[i])):
            c = l1[i][j]
            if c == ' ':
                continue
            if c == 'X':
                index += 1
                lres.append(index)
            else:
                index += 1
    return lres

print(leesFormulier(l1 = ['1 X 3 4 X','X 7 X X 10','11 12 13 14 15','16 17 18 19 20','21 22 23 24 25','26 27 28 29 30','31 32 33 34 35','36 37 38 39 40','41 42 43 44 X']))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。