python 遍历列表/数组:对于列表中的项与对于范围(0,len(list))中的项,两者都显示不同的输出

gudnpqoy  于 2023-01-19  发布在  Python
关注(0)|答案(2)|浏览(110)

编码:1

class Solution:
    def firstElementKTime(self,  a, n, k):
        # code here
        countDict = {}
        for i in a:
            if (a[i] in countDict):
                countDict[a[i]] = countDict[a[i]] + 1
            else:
                countDict[a[i]] = 1
        for i in a:
            if countDict[a[i]] == k:
                return a[i]
        return -1

代码1错误:追溯(最近调用最后调用):文件"/home/www.example.com ",第40行,在main()文件"/home/91ded90adaf6c5d579e2dbec3cedff79.py",第34行,在主打印文件中(对象第一元素K时间(a,n,k))文件"/home/91ded90adaf6c5d579e2dbec3cedff79.py ",第9行,在第一元素K时间中,如果(计数字典中的a [i]):91ded90adaf6c5d579e2dbec3cedff79.py列表索引超出范围 IndexError: list index out of range
编码:2

countDict = {}
        for i in range(0, len(a)):
            if a[i] in countDict:
                countDict[a[i]] = countDict[a[i]] + 1
            else:
                countDict[a[i]] = 1
            i = i + 1
        for i in a:
            if countDict[a[i]] == k:
                return a[i]
        return -1

无错误:
我希望上述两个代码具有相同的行为。

kgsdhlau

kgsdhlau1#

第一个是在a的元素上运行的,而不是在索引上,所以在第一次迭代中,a[i]就像a[a[0]]。
对于a中的i
会给予你一个[0],一个[1],...

ipakzgxi

ipakzgxi2#

如果您期望两个代码的行为相同,则:
在代码1中,必须删除索引part1:

class Solution:
    def firstElementKTime(self,  a, n, k):
        # code here
        countDict = {}
        for i in a:
            if (a in countDict):
                countDict[a] = countDict[a] + 1
            else:
                countDict[a] = 1
        for i in a:
            if countDict[a] == k:
                return a
        return -1

由于for i in a:将直接访问没有索引的元素,而在代码2中,您使用索引进行访问。

相关问题