【问题标题】:Number of distinct elements in python list (without set function) [duplicate]python列表中不同元素的数量(没有set函数)[重复]
【发布时间】:2021-12-08 23:24:33
【问题描述】:

我有下面的练习,但我做不出来,下面的代码只是演示尝试,我尝试了其他几个。也许有人可以提供一些启示。如果我使用嵌套的 for 循环,它只会生成具有所有可能组合的笛卡尔积。但显然,我错过了一些东西

给定一个所有元素都按升序排列的数字序列,返回其中不同元素的数量。

输入:

1 1 2 3 3

输出:

3

你不能使用 set:

my_list=[1, 1, 2, 2, 2, 3, 5 ,6]
count=0
for x in my_list:
  if x ==2:
    count = count +1

print (count)

【问题讨论】:

  • 循环遍历列表,将所有新数字添加到新列表中,如果还没有,则计算新列表
  • 如果Counter 被允许,那么试试这个 - len(Counter(lst).keys()) 如前所述。
  • Mahrkeenerh 感谢它的工作原理,而且很简单!
  • len(dict.fromkeys(my_list).keys())?

标签: python list


【解决方案1】:

感谢Mahrkeenerh,我认为这很有效,而且很简单

my_list=[2, 2, 2, 2, 2, 2, 3,3 ,2]
new_list=[]
for x in my_list:
   if x not in new_list:
    new_list.append(x)
count=0
for k in new_list:
  count = count+1
print (count)

【讨论】:

  • it cannot use set() 但这里 list 没问题感到困惑?
  • 这是一个来自大学的练习,只是为了让你更努力地思考......
【解决方案2】:
my_list = [1, 1, 2, 2, 2, 3, 5, 6]
count = 0
n = len(my_list)
i = 0
while i < n:
    while (i < n - 1 and my_list[i] == my_list[i + 1]): # Move ahead if there are duplicates
        i += 1
    count += 1
    i += 1

print(count)

【讨论】:

    【解决方案3】:

    迭代你的列表并将新值添加到另一个列表,然后打印新列表的长度

    my_list = [1, 1, 2, 2, 2, 3, 5, 6]
    unique_list = []
    for i in my_list:
        if i not in un_l:
            unique_list.append(i)
    print(len(unique_list))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      • 2018-10-01
      • 2019-07-30
      • 2020-02-23
      • 2011-05-07
      相关资源
      最近更新 更多