【问题标题】:For loop cycle orderfor循环循环顺序
【发布时间】:2019-11-27 05:11:45
【问题描述】:

我正在创建一个通过 twitter API 自动发送推文的简短脚本。除了设置 API 凭据(超出问题范围)之外,我还导入了以下库:

import os

我已将我的工作目录设置为包含 3 张照片的文件夹。如果我运行os.listdir('.'),我会得到以下列表。

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

"mylist" 是一个字符串列表,实际上是 3 条推文。

自动在 Twitter 上发布的代码如下所示:


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

代码基本上为第一张图片分配推文和帖子。然后在同一张图片上发布第二条推文和帖子。再次第一张图片 - 第三条推文。然后它继续循环到第二张和第三张图像总共 3*3 9 次/帖子。

但是我想要实现的是用第一条推文拍摄第一张图片并发布。然后用第二条推文拍摄第二张图片并发布。第三张图片 - 第三条推文。然后我想再运行一次循环:第 1 张图片 - 第 1 条推文,第 2 张图片 - 第 2 条推文 ...等等。

【问题讨论】:

  • 请澄清您的上一个请求“然后我想重复一遍,比如说,从头再来一次。”​​
  • 已编辑。基本上我想运行两次所描述的行为,即第一张图片 - 第一条推文,第二张图片 - 第二条推文......等等。
  • 图片和推文的数量总是一样吗?
  • 是的,总是一样的

标签: python loops twitter


【解决方案1】:

使用zip 并行遍历两个(或更多)集合

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

要重复多次,您可以将此循环放入另一个for

【讨论】:

    【解决方案2】:

    假设 os.listdir('.') 和 mylist 的长度相等:

    length = len(mylist) # If len(os.listdir('.')) is greater than len(mylist),
    # replace mylist with os.listdir('.')
    
    imageList = os.listdir('.')
    iterations = 2 # The number of time you want this to run
    for i in range(0,iterations):
        for x in range(0, length):
            api.update_with_media(imageList[x], mylist[num])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-21
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 2017-03-04
      相关资源
      最近更新 更多