楼主: 不二不幸福
24639 3

[问答] list.append运行到后面越来越慢怎么办 [推广有奖]

  • 0关注
  • 1粉丝

硕士生

33%

还不是VIP/贵宾

-

威望
0
论坛币
161 个
通用积分
2.8500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1641 点
帖子
76
精华
0
在线时间
160 小时
注册时间
2017-9-26
最后登录
2024-6-14

楼主
不二不幸福 发表于 2018-6-25 09:41:45 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
代码如下:
  1. bf = pysam.AlignmentFile(sys.argv[1], 'rb')
  2. results = pysam.AlignmentFile("deduplex.bam","wb",template=bf)
  3. readed = []
  4. for r in bf:
  5.     name = r.query_name.split('|')[1]
  6.     UMI1 = re.findall(r'.{8}', name)[0]
  7.     UMI2 = re.findall(r'.{8}', name)[1]
  8.     tag1 = UMI1,UMI2,r.pos,r.pnext
  9.     tag2 = UMI2,UMI1,r.pos,r.pnext
  10.     if tag1 not in readed and tag2 not in readed:
  11.         results.write(r)
  12.         readed.append(tag1)
  13.     else:
  14.         continue
  15. results.close()
  16. bf.close()
复制代码
数据比较大,运行之后发现这个脚本跑得特别慢,想了一下会不会问题出在append这一步?网上查了一下,append越到后面运行速度会变慢?有人说extend效率会高点,但是试了一下,用extend连接达不到我的目的
用append,列表是[(),()]这种格式
用extend,就全部连在一起了
请问一下有没有什么方法可以提高运行效率啊?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:提高运行效率 高运行效率 数据比较 运行速度 运行效率

已有 1 人评分论坛币 收起 理由
我的素质低 + 1 精彩帖子

总评分: 论坛币 + 1   查看全部评分

沙发
不二不幸福 发表于 2018-6-25 15:01:16
已解决,将list改为set,用set.add()可以提高速度

藤椅
startyxf 在职认证  发表于 2018-6-25 15:29:39
往后添加要数,所以慢,借用scala的方法,从头插入,再sort

板凳
yeayee 发表于 2018-6-25 16:04:22
set缺点是你如何保证顺序?

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 02:01