首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >输入到列表并查找相同输入python的最长条纹

输入到列表并查找相同输入python的最长条纹
EN

Stack Overflow用户
提问于 2015-03-04 02:47:55
回答 5查看 7.5K关注 0票数 2

我正在写一个程序,在这个程序中,用户在列表中输入值,直到想要结束它,程序会告诉用户他们输入的最长的数字。例如,如果用户输入7,7,6,6,4,则最终将得到输出:您的最长连线是3。因为连续输入了3次7。

到目前为止,我已经有了这个,它似乎不想结束当前的运行,所以如果我输入7,7,7,6,6,6,5,4,它会告诉我最长的连线是7,就像它继续从7开始的连线一样。这就是我所拥有的:

代码语言:javascript
运行
复制
mylist = []

run = 1

currentrun = 1

number = input('enter a number: ')
mylist.append(number)



while number != 'end' :
    number = input ('enter a number: ')
    mylist.append(number)
for i in range (len(mylist)):

    if mylist[i] == mylist[i-1] and mylist[i] == mylist[i+1] :
        currentrun = currentrun + 1
    else:
        currentrun = 0

    print (currentrun)
    if currentrun > run:
        run = currentrun

print (mylist)

print ('Your longest run was' ,run)

任何帮助都是非常感谢的。

EN

回答 5

Stack Overflow用户

发布于 2015-03-04 02:54:20

假设您有一个列表,比如[7, 7, 7, 6, 6, 6, 6, 5, 4, 6, 7],您可以使用groupby()函数来计算重复次数,然后在最后打印最大次数。

代码语言:javascript
运行
复制
from itertools import groupby
a = [7, 7, 7, 6, 6, 6, 6, 5, 4, 6, 7]
lst = []
for n,c in groupby(a):
   num,count = n,sum(1 for i in c)
   lst.append((num,count))

maxx = max([y for x,y in lst])
print 'Your longest run was {}'.format(maxx)

在这种情况下,它返回4,因为数字6连续重复了4次

票数 2
EN

Stack Overflow用户

发布于 2015-03-04 03:44:27

代码语言:javascript
运行
复制
>>> from itertools import groupby
>>> input_iter = iter(lambda: input('enter a number: '), 'end')
>>> max(sum(1 for x in v) for k,v in groupby(input_iter))
enter a number: 7
enter a number: 7
enter a number: 7
enter a number: 6
enter a number: 6
enter a number: 4
enter a number: end
3
票数 2
EN

Stack Overflow用户

发布于 2015-03-04 02:57:58

这是你所描述的如何做到的一个冗长的版本。中途我意识到我是在Python16上运行它,所以它是向后兼容的!

代码语言:javascript
运行
复制
a = None # stores the last number seen
b = 0 # stores the count of the last number
result = [0, 0] # number, count result array
for c in "7,7,7,6,6,6,6,5,4".split(','): # split string into array of
                                         # just our numbers
    c = int(c) # change the character into a bast ten int
    if c != a: # check current number against last
        a = c # if different than last, remember current number as last
        b = 1 # start over counting at one
    else: # if current number is same as last
        b = b + 1 # increment counter
        if b > result[1]: result = a, b # if counter higher than highest
                                        # previous count, store the
                                        # current number and count
print(("value: %i, count: %i" % result)) # print resulting number, count

输出:

代码语言:javascript
运行
复制
value: 6, count 4

如果您有任何问题,请随时发表意见。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28839607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档