试图在一行中找到相同的数字

2024-04-23 07:42:01 发布

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

我试图在列表中找到一行中最大的数字序列,我可以输入。我是这样做的:

list = []
count_max_numbers = 0
while True:
    x = int(input('число: '))
    if x == 0:
        break
    list.append(int(x))
    max_number = max(list)

for i in list:
    if i != max_number:
        pass
    else:
        count_max_numbers += 1


current_result = 0
max_result = 0
last_seen = list[0]
longest_digit = 0

for i in list:
    if i == last_seen:
        current_result += 1
    else:
        if current_result > max_result:
            max_result = current_result
            longest_digit = i
        last_seen = i
        current_result = 1

if current_result > max_result:
    max_result = current_result
    longest_digit = i

print(f'{list}')
print(f'max number: {max_number} reapeted{count_max_numbers} times')
print(f'the biggest series: {longest_digit} repeated {max_result} times')

这仅适用于列表中的第一个数字。但我需要处理整个列表。 例如,如果输入(1,2,3,3,3,5,55) 它需要获得输出:最大系列:3次重复4次 我仍然对{longest_digit}的输出有问题,这是不正确的


Tags: number列表longestifcount数字resultcurrent
3条回答

试试这个:

mylist = [1,2,3,3,3,3,5,55]
val_holder = {}

for val in mylist:
    if val not in val_holder.keys():
        val_holder[val] = 1
    else:
        val_holder[val] += 1

max_key = max(val_holder, key=val_holder.get)
print(max_key)

下面是一个简单的算法:

初始化longest = Nonelongest_digit = Nonecurrent = 0previous_digitcurrent_digit = None

然后,对于列表中的每个item

  • 如果该项等于current_digit,则将current增加1
  • 否则:
    • (A) 如果current > longest,则设置longest = previous_digitlongest_digit = item
    • (B) 然后,将current重置为1,将current_digit重置为item
  • previous_digit设置为item

在列表的末尾,也执行上面的步骤(A)

现在你应该在{}(4)和{}(3)中找到答案

我对此的建议是使用dictionary

lst = [1,2,3,3,3,3,5,55]
dict = {}
for val in lst:
    if val not in dict.keys():
        dict[val] = 1
    else:
        dict[val] = dict[val] + 1

一旦我们得到字典,我们就使用值对其进行排序

sorted_dict = sorted(dict.items(), key=lambda keyVal: keyVal[1], reverse=True)

print(dict[0][0])

相关问题 更多 >