尝试在不使用任何内置函数的情况下查找一个数字在列表中出现的次数。还有什么办法?我下面的代码不起作用

2024-04-26 10:33:01 发布

您现在位置:Python中文网/ 问答频道 /正文

在不使用任何内置函数的情况下,尝试查找一个数字在列表中出现的次数。下面的代码不起作用

a = [1,1,2,3,4,4,5]
for i in a:
    c = 0
    if a[i] == a[i]+1:
        c =+1
        print(c)

Tags: 函数代码in列表forif情况数字
3条回答

我很惊讶地看到3个答案没有使用字典来解决这个问题。你知道吗

l = [1, 1, 2, 3, 4, 4, 5]
counts = {}
for x in l:
    if x in counts:
        counts[x] += 1
    else:
        counts[x] = 1

在运行上述代码之后,counts存储列表l中每个项的出现次数,这些项本身(在本例中是数字)作为键。你知道吗

>>> l = [1, 1, 2, 3, 4, 4, 5]
>>> counts = {}
>>> for x in l:
...     if x in counts:
...         counts[x] += 1
...     else:
...         counts[x] = 1
...
>>> counts
{1: 2, 2: 1, 3: 1, 4: 2, 5: 1}

我看到的一个丑陋但几乎有趣的方法是循环遍历列表,找到最大值,创建一个这样大小的列表,然后在找到值时重新遍历并增加新列表中的索引。你知道吗

a = [1,1,2,3,4,4,5]

max = -1
for i in a:
    if i > max:
        max = i

long_list = [0] * (max + 1) #create the list of the max size

for i in a:
    long_list[i] = long_list[i] + 1

print(long_list)

这里的输出是:[0,2,1,1,2,1]

同样,这不是空间效率在所有,但我喜欢的实施,因为我认为它是有趣的。你知道吗

这个实现的问题是如果您有一个列表,比如[1,2,3545543,34]。这样你的输出就会有点杂乱,浪费了很多空间。你知道吗

Num是您要找的号码。我不确定这是否是你想要的。你知道吗

a = [1,1,1,1,2,3,4,4,5]
c = 0 
num = 1;
for i in a:
    if i == num:
        c += 1
print(c)

还是这个

a = [1,1,1,1,2,3,4,4,5]
b = []
t = 0
x = 0 
while t < len(a):
  c = 0
  temp = a
  for i in temp:
    if i == x:
      c += 1
  b.append(c)
  t += c
  x += 1
print(b)

输出[0,4,1,1,2,1]

相关问题 更多 >