免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4601 | 回复: 7
打印 上一主题 下一主题

python列表 延时 循环操作 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-04-30 17:40 |只看该作者 |倒序浏览
本帖最后由 weizhiyong21 于 2015-04-30 17:42 编辑



本人想写个脚本,如上所述

实时输出的功能自己已经写好了,但是关于输出的值,自己没有想到好的方法。

询问了别人,目前有两个解决办法:
1.  将value每次输出到tmp文件中,然后每次取值时,使用tail -n 3 tmp
2.  建一个空列表,每次往后面添加value,每次取值时去列表最后三个             //本人自己解决刚开始的索引边界问题

以上两个方法目前都可用,但是我的想法是:
  
   一个空list,每一秒,添加一次value,等到 len(list) = 3的时,之后的每次循环就是删除list的第一个元素,然后后面再添加一个新的元素。
如下:

给定value为1
list_t=[]            

list_t=[1]    //第1秒
list_t=[1, 2]    //第2秒
list_t=[1, 2, 3]    //第3秒
list_t=[2, 3, 4]    //第4秒
list_t=[3, 4, 5]    //第5秒
list_t=[4, 5, 6]    //第6秒

求大神用py写出来下。

论坛徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龙
日期:2014-08-08 09:28:02狮子座
日期:2014-09-14 20:32:05
2 [报告]
发表于 2015-04-30 22:36 |只看该作者
  1. from time import sleep
  2. GIVENNUM = 1
  3. def cu(lst = []):
  4.     lst.append(lst and lst[-1]+1 or GIVENNUM)
  5.     if len(lst) > 3:
  6.         lst.pop(0)
  7.     yield lst

  8. for i in range(20):#20是你想执行的次数
  9.     for line in cu():
  10.         for j in line:
  11.             print(j)
  12.     print('================')
  13.     sleep(1)
复制代码

论坛徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龙
日期:2014-08-08 09:28:02狮子座
日期:2014-09-14 20:32:05
3 [报告]
发表于 2015-04-30 23:47 |只看该作者
  1. from time import sleep
  2. GIVENNUM = 1
  3. def cu(lst = [GIVENNUM]):
  4.     if len(lst) > 3:
  5.         lst.pop(0)
  6.     yield lst
  7.     lst.append(lst[-1] + 1)

  8. for i in range(20):#20是你想执行的次数
  9.     for line in cu():
  10.         for j in line:
  11.             print(j)
  12.     print('================')
  13.     sleep(1)
复制代码
修改了一下,不需要每次都运行这个判断语句“lst and lst[-1]+1 or GIVENNUM”,能够提高一点效率吧。

论坛徽章:
0
4 [报告]
发表于 2015-05-01 14:34 |只看该作者
#coding:utf-8
import time

t_list=[]

def get_time(S):
    global t_list
   
    if len(t_list) <= 2:
        t_list.append(S)
        return t_list
    else:
        t_list.append(S)
        t_list.remove(t_list[0])
def mainf():
   
    S=time.strftime('%H:%M:%S', time.localtime())
    get_time(S)
    time.sleep(1)
    print t_list
    mainf()
if __name__ == '__main__':
    mainf()



图片是脚本的执行效果,,为了便于理解,发帖子时改成数字了,

这是昨天下班的一瞬间想到了,,

论坛徽章:
0
5 [报告]
发表于 2015-05-01 14:35 |只看该作者
哈哈,谢谢了,我自己昨天想到了怎么实现,你的方法也是也用的。
回复 3# ssfjhh


   

论坛徽章:
0
6 [报告]
发表于 2015-05-01 14:39 |只看该作者
#coding:utf-8
import time

t_list=[]

def get_time(S):
   
    if len(t_list) <= 2:
        t_list.append(S)
        return t_list
    else:
        t_list.append(S)
        t_list.pop(0)
def mainf():
   
    S=time.strftime('%H:%M:%S', time.localtime())
    get_time(S)
    time.sleep(1)
    print t_list
    mainf()
if __name__ == '__main__':
    mainf()


稍微修改了下

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
7 [报告]
发表于 2015-05-01 15:23 |只看该作者
本帖最后由 liion631818 于 2015-05-01 15:24 编辑
  1. #!/usr/bin/env python

  2. '''
  3.     my python exercise
  4. '''

  5. import time

  6. QUEUE_MAX_ITEM = 3

  7. queue = []


  8. def enQ(item):
  9.     '''
  10.         enter the queue
  11.     '''
  12.     queue.append(item)


  13. def delQ():
  14.     '''
  15.         remove from queue
  16.     '''
  17.     queue.pop(0)


  18. def show():
  19.     '''
  20.         show queue
  21.     '''
  22.     print queue

  23. if __name__ == '__main__':
  24.     init_time = 1
  25.     while True:
  26.         enQ(init_time)
  27.         time.sleep(1)
  28.         if len(queue) > QUEUE_MAX_ITEM:
  29.             delQ()
  30.         init_time += 1

  31.         show()
复制代码
  1. [1]
  2. [1, 2]
  3. [1, 2, 3]
  4. [2, 3, 4]
  5. [3, 4, 5]
  6. [4, 5, 6]
  7. [5, 6, 7]
复制代码
回复 1# weizhiyong21


   

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
8 [报告]
发表于 2015-05-04 14:20 |只看该作者
回复 7# liion631818


    赞~ 很规范!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP