2024-03-29 11:37:43 发布
网友
我试图创建一个元组列表,其中元组的内容是数字9和列表中它前面的数字。在
9
输入列表:
myList = [1, 8, 9, 2, 4, 9, 6, 7, 9, 8]
期望输出:
代码:
sets = [list(zip(myList[i:i], myList[-1:])) for i in myList if i==9]
当前结果:
[[], [], []]
问题的一部分是myList[i:i]总是返回一个空列表。片的结尾是排他的,所以当你做a_list[0:0]时,你试图获取{}中存在于索引0和索引0之间的元素。在
myList[i:i]
a_list[0:0]
你是在正确的轨道上,但你想压缩列表本身。在
[(x, y) for x, y in zip(myList, myList[1:]) if y==9]
如果你刚开始的话,我会给你展示一种更直观的替代方法:
sets = [(myList[i-1], myList[i]) for i in range(len(myList)) if myList[i] == 9]
获取列表长度范围内的索引,如果位置i处的值等于9,则获取相邻元素。在
i
结果是:
这比其他方法效率低,但我决定取消删除它,以向您展示一种不同的方法。您可以使用enumerate()来加快速度:
enumerate()
sets = [(myList[i-1], j) for i, j in enumerate(myList) if j == 9]
注意在边缘情况下,myList[0] = 9没有zip的理解行为和有{}的理解行为是不同的。在
myList[0] = 9
zip
具体来说,如果myList = [9, 1, 8, 9, 2, 4, 9, 6, 7, 9, 8],则:
myList = [9, 1, 8, 9, 2, 4, 9, 6, 7, 9, 8]
[(myList[i-1], myList[i]) for i in range(len(myList)) if myList[i] == 9] # results in: [(8, 9), (8, 9), (4, 9), (7, 9)]
同时:
[(x, y) for x, y in zip(myList, myList[1:]) if y==9] # results in: [(8, 9), (4, 9), (7, 9)]
这取决于你决定哪一个符合你的标准,我只是指出,它们并不是在所有情况下都表现相同。在
更清洁的Python法:
>>> [(x,y) for x,y in zip(myList, myList[1:]) if y == 9] [(8, 9), (4, 9), (7, 9)]
上面的代码是做什么的:
zip(some_list, some_list[1:])
问题的一部分是}中存在于索引0和索引0之间的元素。在
myList[i:i]
总是返回一个空列表。片的结尾是排他的,所以当你做a_list[0:0]
时,你试图获取{你是在正确的轨道上,但你想压缩列表本身。在
如果你刚开始的话,我会给你展示一种更直观的替代方法:
获取列表长度范围内的索引,如果位置
i
处的值等于9
,则获取相邻元素。在结果是:
^{pr2}$这比其他方法效率低,但我决定取消删除它,以向您展示一种不同的方法。您可以使用
enumerate()
来加快速度:注意在边缘情况下,}的理解行为是不同的。在
myList[0] = 9
没有zip
的理解行为和有{具体来说,如果
myList = [9, 1, 8, 9, 2, 4, 9, 6, 7, 9, 8]
,则:同时:
这取决于你决定哪一个符合你的标准,我只是指出,它们并不是在所有情况下都表现相同。在
更清洁的Python法:
上面的代码是做什么的:
zip(some_list, some_list[1:])
将生成相邻元素对的列表。在9
的条件下进行过滤。完成:)相关问题 更多 >
编程相关推荐