【发布时间】:2018-08-01 15:19:53
【问题描述】:
我有一个 for 循环正在运行,它从包含多个 Unix 时间的另一个列表的元素创建一个新的选择 Unix 时间列表,这些元素的索引又由另一个列表给出。我的问题是在这个 for 循环中 append 函数不起作用,我不知道为什么,因为我没有收到错误。在 for 循环之后简单地忽略 print 函数。我不确定我做错了什么。有人可以帮帮我吗?
这是我的代码:
adjusted_exc_pass_numbers = [0, 6, 9, 16, 19, 22, 25, 32, 35, 41, 48]
processed_start_times = [1519275660, 1519287600, 1519325040, 1519336920, 1519360080, 1519365900, 1519371900, 1519409400, 1519415340, 1519421280, 1519450260, 1519456200, 1519499700, 1519534680, 1519540560, 1519546620, 1519584060, 1519596000, 1519619160, 1519624920, 1519630920, 1519668420, 1519674360, 1519680360, 1519709340, 1519715220, 1519758720, 1519793760, 1519799580, 1519805700, 1519843080, 1519855020, 1519878180, 1519884000, 1519890000, 1519927500, 1519939380, 1519968360, 1519974300, 1520017800, 1520052780, 1520058660, 1520064720, 1520102160]
ppst = []
for element in range(len(adjusted_exc_pass_numbers)):
ppst.append(processed_start_times[int(adjusted_exc_pass_numbers[element])])
print(ppst)
当我运行它时,打印被忽略,其余的代码就像语句不存在一样执行。我不明白为什么它没有附加或打印。
感谢您的宝贵时间。
【问题讨论】:
-
此脚本失败并出现错误。如果你看不到错误,你应该以不同的方式运行它(例如从命令行)
-
为什么不只是
ppst = [adjusted_exc_pass_numbers[index] for index in processed_start_times]?遍历range(len(thing))在 Python 中通常是单调的。 -
你得到一个错误,因为
adjusted_exc_pass_numbers的最后一个元素是 48 而processed_start_times只有 44 个元素。因此,在循环中 Python 无法获取processed_start_times和 IndexErrors 的第 48 个元素。 -
另外你不应该使用循环,正如
jonrsharpe提到的那样。也可以试试:list(map(processed_start_times.__getitem__, adjusted_exc_pass_numbers)) -
避免使用
for element in range(len(x)):,直接使用for element in x:
标签: python python-3.x list for-loop append