Python论坛  - 讨论区

标题:Re: Re: [python-chinese] list如何实现distinct的功能?

2005年08月17日 星期三 08:57

wangzhe wangzhe at eastcom.com
Wed Aug 17 08:57:41 HKT 2005

panhudie,您好! 

  set()是哪个模块的?

======== 2005-08-17 02:47:55 您在来信中写道: ========

def  do(): 
    fin=open('chap1.txt')
    lines = [line for line in fin]
    slines=set(line)
    print 'lines :', len(lines)
    print 'sline :', len(slines)

这个'chap1.txt'是4m
%time do()
lines : 102996
slines :  4303
CPU times: user 0.20 s, sys: 0.00 s, total: 0.20 s
Wall time: 0.20

这个'chap1.txt'是16m
%time do()
lines : 411984
slines :  4303
CPU times: user 0.80 s, sys: 0.00 s, total: 0.80 s
Wall time: 0.80
 

 
On 8/17/05, 马踏飞燕 <honeyday.mj at gmail.com> wrote: 
我有一个很大的列表,100万条以上的数据,其中有大量的数据是重复的。
我想实现像sql语句里面的select distinct的功能,就是删除重复的数据。
我现在能想到的就是建一个临时列表,然后对原列表遍历,再与临时表进行比较,如果重复就跳过。但是这样会形成巨大的循环量,请问有没有更先进的做法呢? 

fin = open('d:\\ppp.txt','r')
   fout = open('d:\\ppp2.txt','w')
   lines = fin.readlines()
   distinct_line = []
   for line in lines:
       if line not in distinct_line:
           distinct_line.append(line) 
           fout.write(line)

   fout.close()
   fin.close()

其中,ppp.txt有100万行,我运行了一下,似乎程序永远也不会停止了。。。。5分钟都没有运算完,最后只好强制结束。

_______________________________________________
python-chinese list
python-chinese at lists.python.cn
http://python.cn/mailman/listinfo/python-chinese






= = = = = = = = = = = = = = = = = = = = = = 
        致
礼!

              wangzhe
              wangzhe at eastcom.com
                 2005-08-17
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050817/c6a9e45b/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月17日 星期三 09:12

jam.zheng jam.zheng at achievo.com
Wed Aug 17 09:12:24 HKT 2005

class MyFrame(wxFrame):
    def __init__(self, parent, ID, title):
        wxFrame.__init__(self, parent, ID, title, wxDefaultPosition,
wxSize(1024, 768))
        self.CreateToolBar()
        self.SetToolBar("xxxx")
        self.CreateStatusBar()
        self.SetStatusText("xxx")
            。。。。。。。

以上是窗体代码,下面的省了 ,为什么这个toolbar就不行,加上去就报错,我看了
api的,是这样用的,请大侠们指教!谢谢
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050817/8f0d2c74/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月17日 星期三 09:29

panhudie nirvana117 at gmail.com
Wed Aug 17 09:29:09 HKT 2005

On 8/17/05, wangzhe <wangzhe at eastcom.com> wrote:

>   set()是哪个模块的?
>  
 python2.4 Built-In 模块

 不过set()过后顺序会被打乱, 这个是用dict()不过要慢一些,但还是有可能line的顺序会被打乱

def do():
lines = [(line,i) for i,line in enumerate(open('chap1.txt'))]
print len(lines)
linesDict = dict(lines)
lines = linesDict.items()
import operator
lines.sort(key=operator.itemgetter(1))
print len(lines)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050817/e85eb4c7/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月17日 星期三 09:29

limodou limodou at gmail.com
Wed Aug 17 09:29:54 HKT 2005

在 05-8-17,wangzhe<wangzhe at eastcom.com> 写道:
>  panhudie,您好! 
>   
>   set()是哪个模块的? 
>   
在2.3中是Sets模块的,到了2.4就变成内置函数了。

-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月17日 星期三 09:34

limodou limodou at gmail.com
Wed Aug 17 09:34:37 HKT 2005

在 05-8-17,jam.zheng<jam.zheng at achievo.com> 写道:
>  
> class MyFrame(wxFrame):
>     def __init__(self, parent, ID, title):
>         wxFrame.__init__(self, parent, ID, title, wxDefaultPosition,
> wxSize(1024, 768))
>         self.CreateToolBar()  
>         self.SetToolBar("xxxx")
>         self.CreateStatusBar()
>         self.SetStatusText("xxx")
>             。。。。。。。 
>   
> 以上是窗体代码,下面的省了
> ,为什么这个toolbar就不行,加上去就报错,我看了api的,是这样用的,请大侠们指教!谢谢 

具体报什么错误?

执行了CreateToolBar()后为什么还执行SetToolBar()呢?还有你创建了ToolBar却没有把生成的对象保存,以后怎么用它呀? 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号