On 05/02/2015 13:27, Bob Williams wrote:


I would like to reduce all those repeated calls to do_sync() in main(), for 
example, to one by putting the *_srcpath and *_*syncpath variables into lists 
(eg. source_list and sync_list) and using a for loop to get the first item out 
of each list, then the second item, etc. Something like:

for i in range(0, len(source_list)):
     for j in range(0, len(sync_list)):
         do_sync(source_list[i], sync_list[j])

but this will get all the values of sync_list[j] for each value of 
source_list[i], which is not what I want.

I hope this is clear enough to see my problem? I realise that the print 
statements will need some work, I'm just trying to get the functionality 
working.

TIA

Bob


Apologies for shouting but this has been said several times in the past so I'm deliberately emphasising the point. YOU *DON'T* NEED TO LOOP THROUGH ITEMS IN A LIST USING range AND len. Hence:-

for source in source_list:
    for sync in sync_list:
        do_sync(source, sync)

Having said that I haven't looked at your code in depth, but I think you're looking for something like:-

for source, sync in zip(source_list, sync_list):
    do_sync(source, sync)

Let's try it.

>>> def do_sync(source, sync):
...     print('Source is', source, 'Sync is', sync)
...
>>> source_list = ['a', 'b', 'c']
>>> sync_list = ['w', 'x', 'y']
>>> for source, sync in zip(source_list, sync_list):
...   do_sync(source, sync)
...
Source is a Sync is w
Source is b Sync is x
Source is c Sync is y

Am I close?

--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.

Mark Lawrence

_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to