当前位置: 首页 > 面试题库 >

遍历Python中的分区

邵轶
2023-03-14
问题内容

我想知道(在Python中)迭代给定大小的列表的分区的最佳方法是什么。

举例来说,我们有列表[1,2,3,4,5],需要k=3分区。一个糟糕的方法是这样写:

lst = [1,2,3,4,5]
for i in range(1,len(lst)):
    for j in range(i+1, len(lst)):
        print lst[:i], lst[i:j], lst[j:]

这给

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

但是,如果我以后想遍历k=4分区,则必须添加for循环嵌套级别,这在运行时无法完成。理想情况下,我想写一些类似的东西:

for part in partitions([1,2,3,4,5], k):
    print part

有谁知道最好的方法吗?


问题答案:

如果没有,我会使用与您相同的想法pairwise

from itertools import combinations

def partitions(items, k):

    def split(indices):
        i=0
        for j in indices:
            yield items[i:j]
            i = j
        yield items[i:]

    for indices in combinations(range(1, len(items)), k-1):
        yield list(split(indices))


 类似资料:
  • 本文向大家介绍Python中的字典遍历备忘,包括了Python中的字典遍历备忘的使用技巧和注意事项,需要的朋友参考一下 备忘一下python中的字典如何遍历,没有什么太多技术含量.仅供作为初学者的我参考. interitems和iterms区别 参考 http://stackoverflow.com/questions/10458437/python-what-is-the-difference-

  • 本文向大家介绍python中的逆序遍历实例,包括了python中的逆序遍历实例的使用技巧和注意事项,需要的朋友参考一下 如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列。 range()语法: range(start,end,step=1):顾头不顾尾 正序遍历: range(10):默认step=1,start=0,生成可迭代对象,包含[0, 1, 2, 3, 4, 5, 6

  • 问题内容: 我已经有一段时间没有编码了,并试图重新使用Python。我正在尝试编写一个简单的程序,通过将每个数组元素值相加来求和一个数组。这就是我所拥有的: 我收到以下错误: 我发现我想做的事情显然很简单: 但是很明显,我无论如何都不正确地遍历数组,我认为这是我需要为其他目的而正确学习的东西。谢谢! 问题答案: 当您像在数组中那样循环时,for变量(在此示例中)是数组的当前元素。 例如,如果你的就

  • 我有一个网页,其中包含一个表格,该表格仅在我单击“检查元素”时出现,并且在查看源页面中不可见。该表仅包含两行,每行有几个单元格,看起来类似于此: 我试图做的是遍历行并返回每个单元格中包含的文本。我似乎真的不能用Selenium来做到这一点。元素不包含ID,我不知道如何获取它们。我不太熟悉使用xpath之类的。 这是一个返回的调试尝试: 从行中获取文本的简单方法是什么?

  • 本文向大家介绍python中enumerate函数遍历元素用法分析,包括了python中enumerate函数遍历元素用法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python中enumerate函数遍历元素用法。分享给大家供大家参考,具体如下: enumerate函数用于遍历序列中的元素以及它们的下标 示例代码如下: 运行结果如下: 希望本文所述对大家Python程序设计有所帮

  • 问题内容: 我是一个selenium菜鸟,一直在努力用python完成事情。我试图从此页面迭代所有用户评论(“ partial_entry”类)https://www.tripadvisor.com/Airline_Review-d8729164-Reviews- Cheap-Flights-or560-TAP- Portugal#REVIEWS 即使Im每次都在for循环中选择一个不同的元素,但