Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #44051 > unrolled thread

List Count

Started byBlind Anagram <blindanagram@nowhere.org>
First post2013-04-22 12:58 +0100
Last post2013-04-22 06:36 -0700
Articles 2 on this page of 42 — 8 participants

Back to article view | Back to comp.lang.python


Contents

  List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-22 12:58 +0100
    Re: List Count Dave Angel <davea@davea.name> - 2013-04-22 08:51 -0400
      Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-22 14:03 +0100
      Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-22 14:03 +0100
    Re: List Count Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-04-22 13:13 +0000
      Re: List Count Skip Montanaro <skip@pobox.com> - 2013-04-22 08:57 -0500
      Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-22 15:15 +0100
        Re: List Count Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2013-04-22 16:14 +0100
          Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-22 16:50 +0100
            Re: List Count Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2013-04-22 17:06 +0100
              Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-22 17:38 +0100
                Re: List Count Skip Montanaro <skip@pobox.com> - 2013-04-22 12:48 -0500
                  Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-22 20:22 +0100
                Re: List Count Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2013-04-22 21:18 +0100
                  Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-22 22:25 +0100
                    Re: List Count Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2013-04-23 00:06 +0100
                      Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-23 07:45 +0100
                    Re: List Count Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-04-22 23:28 +0000
                      Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-23 08:00 +0100
                Re: List Count Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2013-04-22 22:03 +0100
                  Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-22 22:32 +0100
                    Re: List Count Dave Angel <davea@davea.name> - 2013-04-22 21:47 -0400
                      Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-23 08:02 +0100
              Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-22 17:38 +0100
          Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-22 16:50 +0100
        Re: List Count Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-04-22 23:01 +0000
          Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-23 08:05 +0100
            Re: List Count Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2013-04-23 12:08 +0100
              Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-23 12:45 +0100
                Re: List Count Terry Jan Reedy <tjreedy@udel.edu> - 2013-04-23 15:01 -0400
            Re: List Count Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-04-23 14:49 +0000
              Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-23 17:57 +0100
                Re: List Count Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2013-04-23 18:45 +0100
                  Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-23 19:30 +0100
                    Re: List Count Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2013-04-23 20:16 +0100
                Re: List Count Terry Jan Reedy <tjreedy@udel.edu> - 2013-04-23 16:00 -0400
                  Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-23 21:41 +0100
                Re: List Count Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2013-04-23 21:38 +0100
                Re: List Count Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-04-24 01:59 +0000
                  Re: List Count Blind Anagram <blindanagram@nowhere.org> - 2013-04-24 10:01 +0100
    Re: List Count Peter Otten <__peter__@web.de> - 2013-04-22 15:22 +0200
    Re: List Count 88888 Dihedral <dihedral88888@googlemail.com> - 2013-04-22 06:36 -0700

Page 3 of 3 — ← Prev page 1 2 [3]


#44066

FromPeter Otten <__peter__@web.de>
Date2013-04-22 15:22 +0200
Message-ID<mailman.914.1366636933.3114.python-list@python.org>
In reply to#44051
Blind Anagram wrote:

> I would be grateful for any advice people can offer on the fastest way
> to count items in a sub-sequence of a large list.
> 
> I have a list of boolean values that can contain many hundreds of
> millions of elements for which I want to count the number of True values
> in a sub-sequence, one from the start up to some value (say hi).
> 
> I am currently using:
> 
>    sieve[:hi].count(True)
> 
> but I believe this may be costly because it copies a possibly large part
> of the sieve.
> 
> Ideally I would like to be able to use:
> 
>    sieve.count(True, hi)
> 
> where 'hi' sets the end of the count but this function is, sadly, not
> available for lists.
> 
> The use of a bytearray with a memoryview object instead of a list solves
> this particular problem but it is not a solution for me as it creates
> more problems than it solves in other aspects of the program.
> 
> Can I assume that one possible solution would be to sub-class list and
> create a C based extension to provide list.count(value, limit)?
> 
> Are there any other solutions that will avoid copying a large part of
> the list?

If the list doesn't change often you can convert it to a string

>>> items = [True, False, False] * 10
>>> sitems = "".join("FT"[i] for i in items)
>>> sitems
'TFFTFFTFFTFFTFFTFFTFFTFFTFFTFF'
>>> sitems.count("T", 3, 10)
3
>>> sitems.count("F", 3, 10)
4

Or you use a[3:10].sum() on a boolean numpy array. Its slices are views 
rather than copies:

>>> import numpy
>>> a = numpy.array([True, False, False]*10)
>>> a[3:10].sum()
3

[toc] | [prev] | [next] | [standalone]


#44068

From88888 Dihedral <dihedral88888@googlemail.com>
Date2013-04-22 06:36 -0700
Message-ID<8aa3c60d-ca53-4ba7-a396-66b806eb8067@googlegroups.com>
In reply to#44051
Blind Anagram於 2013年4月22日星期一UTC+8下午7時58分20秒寫道:
> I would be grateful for any advice people can offer on the fastest way
> 
> to count items in a sub-sequence of a large list.
> 
> 
> 
> I have a list of boolean values that can contain many hundreds of
> 
> millions of elements for which I want to count the number of True values
> 
> in a sub-sequence, one from the start up to some value (say hi).
> 
> 
> 
> I am currently using:
> 
> 
> 
>    sieve[:hi].count(True)
> 
> 
> 
> but I believe this may be costly because it copies a possibly large part
> 
> of the sieve.
> 
> 
> 
> Ideally I would like to be able to use:
> 
> 
> 
>    sieve.count(True, hi)
> 
> 
> 
> where 'hi' sets the end of the count but this function is, sadly, not
> 
> available for lists.
> 
> 
> 
> The use of a bytearray with a memoryview object instead of a list solves
> 
> this particular problem but it is not a solution for me as it creates
> 
> more problems than it solves in other aspects of the program.
> 
> 
> 
> Can I assume that one possible solution would be to sub-class list and
> 
> create a C based extension to provide list.count(value, limit)?
> 
> 
> 
> Are there any other solutions that will avoid copying a large part of
> 
> the list?

For those problems related to a homogeneous list of numbers
, please check whether  the arrays in numpy can fit your needs practically or not.


Sometimes I work on numbers  in varied ranges, 
then the list and the long integers in Python is really handy.




[toc] | [prev] | [standalone]


Page 3 of 3 — ← Prev page 1 2 [3]

Back to top | Article view | comp.lang.python


csiph-web