how to iterate through two sequence items
Why not do it like this
------------------------------------------- | 1.item - 1.prop<br> |2.item - 1.prop<br> | | 1.item - 2.prop |2.item - 2.prop | ------------------------------------------- | 3.item - 1.prop<br> |4.item - 1.prop<br> | | 3.item - 2.prop |4.item - 2.prop | -------------------------------------------
Neil
thanks neil it's a question of layout and it would be nice to have the possibilty to iterate through two or more sequence items in one pass, wouldn't it? Peter -- berlin.de - meine stadt im netz. Jetzt eigene eMail-adresse @berlin.de sichern! http://www.berlin.de/home/MeineStadt/Anmeldung
Am 08.02.2002, 12:18 Uhr schrieb Peter Walerowski <peter.walerowski@berlin.de>:
it would be nice to have the possibilty to iterate through two or more sequence items in one pass, wouldn't it?
Hai Peter! That's easily possible if you manipulate your list to reflect your data processing requirements. You want to have to items in one iteration so IMHO the pythonic solution is not to skip every other item but to construct a list of tuples each containing two items. Assuming your list looks like this: m=["a","b","c","d","e","f"] you can do this by: newlist=map(lambda x:(m[x],m[x+1]), range(0,len(m)-2,2)) which results in: [('a', 'b'), ('c', 'd'), ('e', 'f')] You'll have to make sure that your original list has an even number of items. Happy zoping! Jo. -- Internetmanufaktur Jo Meder ---------------------- Berlin, Germany http://www.meder.de/ ------------------- fon: ++49-30-417 17 63 33 Kollwitzstr. 75 ------------------------ fax: ++49-30-417 17 63 45 10435 Berlin --------------------------- mob: ++49-170- 2 98 89 97 Public GnuPG-Key ---------- http://www.meder.de/keys/jo-pubkey.txt
Jo Meder wrote:
Am 08.02.2002, 12:18 Uhr schrieb Peter Walerowski <peter.walerowski@berlin.de>:
it would be nice to have the possibilty to iterate through two or more sequence items in one pass, wouldn't it?
range: http://www.python.org/doc/current/lib/built-in-funcs.html untested <dtml-let ov="objectValues('my Object')" lv="_.len(ov)" i1=sequence-index i2="i1+1"
<dtml-in "_.range(o, lv, 2)"> <tr> <td><dtml-var "ov[i1]['firstProp']"</td> <td><dtml-var "ov[i2]['firstProp']"</td> </tr> <tr> <td><dtml-var "ov[i1]['secndProp']"</td> <td><dtml-var "ov[i2]['secndProp']"</td> </tr> </dtml-let ov>
Am 11.02.2002, 12:45 Uhr schrieb hans <hans@beehive.de>:
untested <dtml-let ov="objectValues('my Object')" lv="_.len(ov)" i1=sequence-index i2="i1+1"
<dtml-in "_.range(o, lv, 2)"> <tr> <td><dtml-var "ov[i1]['firstProp']"</td>
Minor bug: I think you should change this line to <td><dtml-var "ov[i1]['firstProp']"></td> and subsequent <td>-lines accordingly. Jo Meder. -- Internetmanufaktur Jo Meder ---------------------- Berlin, Germany http://www.meder.de/ ------------------- fon: ++49-30-417 17 63 33 Kollwitzstr. 75 ------------------------ fax: ++49-30-417 17 63 45 10435 Berlin --------------------------- mob: ++49-170- 2 98 89 97 Public GnuPG-Key ---------- http://www.meder.de/keys/jo-pubkey.txt
Am 11.02.2002 12:45:24, schrieb hans <hans@beehive.de>:
Jo Meder wrote:
Am 08.02.2002, 12:18 Uhr schrieb Peter Walerowski <peter.walerowski@berlin.de>:
it would be nice to have the possibilty to iterate through two or more sequence items
in one pass, wouldn't it?
range: http://www.python.org/doc/current/lib/built-in-funcs.html
untested <dtml-let ov="objectValues('my Object')" lv="_.len(ov)" i1=sequence-index i2="i1+1"
<dtml-in "_.range(o, lv, 2)"> <tr> <td><dtml-var "ov[i1]['firstProp']"</td> <td><dtml-var "ov[i2]['firstProp']"</td> </tr> <tr> <td><dtml-var "ov[i1]['secndProp']"</td> <td><dtml-var "ov[i2]['secndProp']"</td> </tr> </dtml-let ov>
thank you hans. it does not work, but it was the right input for me to find the solution. this is testet: <dtml-let ov="objectValues('my Object')" lv="_.len(ov)"
<dtml-in "_.range(0, lv, 2)"> <dtml-let i1=sequence-item> <tr> <td><dtml-var "ov[i1].getProperty('firstProp')"></td> <td><dtml-var "ov[i1+1].getProperty('firstProp')"></td> </tr> <tr> <td><dtml-var "ov[i1].getProperty('secondProp')"></td> <td><dtml-var "ov[i2].getProperty('secondProp')"></td> </tr> </dtml-let i1> </dtml-in> </dtml-let ov>
this is testet:
<dtml-let ov="objectValues('my Object')" lv="_.len(ov)"
<dtml-in "_.range(0, lv, 2)"> <dtml-let i1=sequence-item> <tr> <td><dtml-var "ov[i1].getProperty('firstProp')"></td> <td><dtml-var "ov[i1+1].getProperty('firstProp')"></td> </tr> <tr> <td><dtml-var "ov[i1].getProperty('secondProp')"></td> <td><dtml-var "ov[i2].getProperty('secondProp')"></td> </tr> </dtml-let i1> </dtml-in> </dtml-let ov> <dtml-let ov="objectValues('my Object')" lv="_.len(ov)"
and if you want to eliminate an error when your sequence is odd: <dtml-in "_.range(0, lv, 2)"> <dtml-let i1=sequence-item> <tr> <td><dtml-var "ov[i1].getProperty('firstProp')"></td> <td> <dtml-if "(i1+1)<lv"> <dtml-var "ov[i1+1].getProperty('firstProp')"> <dtml-else> </dtml-if> </td> </tr> <tr> <td><dtml-var "ov[i1].getProperty('secondProp')"></td> <td> <dtml-if "(i1+1)<lv"> <dtml-var "ov[i1+1].getProperty('secondProp')"> <dtml-else> </dtml-if> </td> </tr> </dtml-let i1> </dtml-in> </dtml-let ov>
participants (4)
-
hans -
Jo Meder -
Peter Walerowski -
Peter Walerowski