how to iterate over sequence and non-sequence ?

Paul Hankin paul.hankin at gmail.com
Fri Oct 19 03:33:42 EDT 2007


On Oct 19, 12:24 am, stef mientki <stef.mien... at gmail.com> wrote:
> I generate dynamically a sequence of values,
> but this "sequence" could also have length 1 or even length 0.
>
> So I get some line in the form of:
>       line = '(2,3,4)'
>       line = ''
>       line = '(2)'
> (in fact these are not constant numbers, but all kind of integer
> variables, coming from all over the program, selected from a tree, that
> shows all "reachable" variables)
>
> So in fact I get the value from an exec statement, like this
>       exec 'signals = ' + line
>
> Now I want to iterate over "signals", which works perfect if there are 2
> or more signals,
> but it fails when I have none or just 1 signal.
>     for value in signals :
>         do something
>
> As this meant for real-time signals, I want it fast, so (I think) I
> can't afford extensive testing.
>
> Any smart solution there ?

First: don't collect data into strings - python has many container
types which you can use.

Next, your strings look like they're supposed to contain tuples. In
fact, tuples are a bit awkward sometimes because you have to use
'(a,') for a tuple with one element - (2) isn't a tuple of length one,
it's the same as 2. Either cope with this special case, or use lists.
Either way, you'll have to use () or [] for an empty sequence.

--
Paul Hankin




More information about the Python-list mailing list