Python 列表理解返回列表的边缘值

标签 python data-structures iteration list-comprehension

如果我在 python 中有一个列表,例如:

stuff = [1, 2, 3, 4, 5, 6, 7, 8, 9]

长度为 n(在本例中为 9),我有兴趣创建长度为 n/2(在本例中为 4)的列表。我想要原始列表中所有可能的 n/2 值集,例如:

[1, 2, 3, 4], [2, 3, 4, 5], ..., [9, 1, 2, 3]  

是否有一些列表理解代码可以用来遍历列表并检索所有这些子列表?我不关心列表中值的顺序,我只是想找到一种生成列表的巧妙方法。

最佳答案

>>> stuff = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
>>> n=len(stuff)
>>>
>>> [(stuff+stuff[:n/2-1])[i:i+n/2] for i in range(n)]
[[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7], [5, 6, 7, 8], [6, 7, 8, 9], [7, 8, 9, 1], [8, 9, 1, 2], [9, 1, 2, 3]]
>>>

注意:以上代码是基于您的示例的假设

[1, 2, 3, 4], [2, 3, 4, 5], ..., [9, 1, 2, 3]  

如果您确实需要所有可能的值,则需要按照其他人的建议使用 itertools.permutations 或组合函数。

关于Python 列表理解返回列表的边缘值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2643209/

相关文章:

python - 什么是出色的即时运行 Python 调试器/shell?

java - HashMap:以随机顺序迭代键值对

C-迭代通过 void* 传递的结构数组

python - 使用 VGG16 预训练模型处理灰度图像时出错

python - 获取标签之间的字符串(<div><p>p1</p>TEST<p>p2</p></div> 中的 TEST)

haskell - 类型模式的名称 : R a b = Q (a -> (R a b, b))

python - 如何在python中一次性找到链表的中间元素?

language-agnostic - "Necessary"命令式语言中递归的使用

loops - 无法在 Flutter 中过滤位置

python - 切片上限不在列表中的列表的最快方法