Search code examples
pythonloopstwitter

For loop cycle order


I am creating a short script which tweets automatically via twitter API. Besides setting up the API credentials (out of the scope for the question) I import the following library:

import os

I have set my working directory to be a folder where I have 3 photos. If I run os.listdir('.') I get the following list.

['Image_1.PNG',
 'Image_2.PNG',
 'Image_3.jpg',]

"mylist" is a list of strings, practically 3 tweets.

The code that posts in Twitter automatically looks like that:


for image in os.listdir('.'):
    for num in range(len(mylist)):
        api.update_with_media(image, mylist[num])

The code basically assigns to the first image a tweet and posts. Then to the same image the second tweet and posts. Again first image - third tweet. Then it continues the cycle to second and third image altogether 3*3 9 times/posts.

However what I want to achieve is to take the first image with the first tweet and post. Then take second image with second tweet and post. Third image - third tweet. Then I want to run the cycle one more time: 1st image - 1st tweet, 2nd image - 2nd tweet ...etc.


Solution

  • Use zip to iterate through two (or more) collections in parallel

    for tweet, image in zip(mylist, os.listdir('.')):
        api.update_with_media(image, tweet)
    

    To repeat it more times, you can put this cycle inside another for