Edgewall Software

Changes between Version 1 and Version 2 of HelperFunctions


Ignore:
Timestamp:
Aug 17, 2006, 10:01:57 PM (18 years ago)
Author:
cmlenz
Comment:

Added function pasted on the IrcChannel by Arnar

Legend:

Unmodified
Added
Removed
Modified
  • HelperFunctions

    v1 v2  
    7878
    7979See also the Python Cookbook recipe “[http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/303060 Group a list into sequential n-tuples]”.
     80
     81=== Example usage ===
     82
     83{{{
     84#!xml
     85<table py:with="fields = ['a', 'b', 'c', 'd', 'e']">
     86  <tr py:for="row in group(fields, 2)">
     87    <td py:for="cell in row">${cell}</td>
     88  </tr>
     89</table>
     90}}}
     91
     92That should result in the following output:
     93
     94{{{
     95#!xml
     96<table>
     97  <tr>
     98    <td>a</td><td>b</td>
     99  </tr><tr>
     100    <td>c</td><td>d</td>
     101  </tr><tr>
     102    <td>e</td><td></td>
     103  </tr>
     104</table>
     105}}}
     106
     107== countoccurrences() ==
     108
     109Written by Arnar Birgisson and shared on the IrcChannel.
     110
     111{{{
     112#!python
     113def countoccurrences(numbers, minlength=0):
     114    """Takes a list of integers numbers, in the range of 0..n and returns
     115    a list of integers where i-th item is the number of times i appears in types.
     116   
     117    If minlength is specified and n+1 < minlength, the returned list is
     118    right-padded with zeroes to make it contain minlength items.
     119   
     120    Examples:
     121    >>> countoccurrences([0,3,1,2,1,1,3,5])
     122    [1,3,1,2,0,1]
     123    >>> countoccurrences([0,3,1,2,1,1,3,5], 10)
     124    [1,3,1,2,0,1,0,0,0,0]
     125    """
     126    # TODO come up with a better name
     127    counts = [0] * max(max(numbers)+1, minlength)
     128    for x in numbers:
     129        counts[x] += 1
     130    return counts
     131}}}
     132
     133Example usage:
     134
     135{{{
     136#!xml
     137<py:with vars="counts = countoccurrences([p.status.value for p in subdir.job.pages], 3)">
     138    <td><span style="color: #e18f01;">${counts[0]}</span></td>
     139    <td><span style="color: #249f0b;">${counts[1]}</span></td>
     140    <td><span style="color: #ae0a0a;">${counts[2]}</span></td>
     141</py:with>
     142}}}
     143
     144----
     145See also: MarkupGuide, MarkupRecipes