Python实现将列表拆分为大小为N的块

 更新时间:2023年09月07日 09:40:48   作者:python收藏家  
这篇文章主要为大家整理了一些常见的Python实现将列表拆分为大小为N的块的方法,文中的示例代码讲解详细,具有一定的参考价值,有需要的小伙伴可以了解下

方法1:使用yield

yield关键字使函数能够在再次调用时返回到它停止的位置。这是与常规函数的关键区别,一个常规的函数不能回到它停止的地方。yield关键字帮助函数记住其状态,yield使函数能够挂起和恢复,同时它在挂起执行时返回一个值。

my_list = ['geeks', 'for', 'geeks', 'like',
           'geeky','nerdy', 'geek', 'love',
               'questions','words', 'life']
# Yield successive n-sized
# chunks from l.
def divide_chunks(l, n):
    # looping till length l
    for i in range(0, len(l), n): 
        yield l[i:i + n]
# How many elements each
# list should have
n = 5
x = list(divide_chunks(my_list, n))
print (x)

输出

[['geeks', 'for', 'geeks', 'like', 'geeky'], 
 ['nerdy', 'geek', 'love', 'questions', 'words'], 
 ['life']]

方法2:使用for循环

在这个例子中,我们使用了Python中的循环和列表切片,这将帮助我们将列表分成块。

my_list = [1, 2, 3, 4, 5,
           6, 7, 8, 9]
start = 0
end = len(my_list)
step = 3
for i in range(start, end, step):
    x = i
    print(my_list[x:x+step])

输出

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

方法3: 使用列表解析

在Python中,将列表拆分为一行代码,将列表拆分为多个列表是一种优雅的方式。

my_list = [1, 2, 3, 4, 5,
              6, 7, 8, 9]
# How many elements each
# list should have
n = 4 
# using list comprehension
final = [my_list[i * n:(i + 1) * n] for i in range((len(my_list) + n - 1) // n )] 
print (final)

输出

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

另一种实现方式:

l = [1, 2, 3, 4, 5, 6, 7, 8, 9] 
# How many elements each 
# list should have 
n = 4
# using list comprehension 
x = [l[i:i + n] for i in range(0, len(l), n)] 
print(x)

输出

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

方法4:使用Numpy

在这里,我们使用Numpy.array_split,它将数组拆分为n个大小相等的块。

import numpy as np
arr = range(30)
np.array_split(arr, 6)

输出

[array([0, 1, 2, 3, 4]),
 array([5, 6, 7, 8, 9]),
 array([10, 11, 12, 13, 14]),
 array([15, 16, 17, 18, 19]),
 array([20, 21, 22, 23, 24]),
 array([25, 26, 27, 28, 29])]

方法5:使用itertools

from itertools import islice
def chunk(arr_range, arr_size):
    arr_range = iter(arr_range)
    return iter(lambda: tuple(islice(arr_range, arr_size)), ())
print(list(chunk(range(30), 5)))

输出

[(0, 1, 2, 3, 4),
 (5, 6, 7, 8, 9),
 (10, 11, 12, 13, 14),
 (15, 16, 17, 18, 19),
 (20, 21, 22, 23, 24),
 (25, 26, 27, 28, 29)]

方法6: 使用collections

from collections import deque
def split_list(input_list, chunk_size):
  # Create a deque object from the input list
  deque_obj = deque(input_list)
  # While the deque object is not empty
  while deque_obj:
      # Pop chunk_size elements from the left side of the deque object
      # and append them to the chunk list
      chunk = []
      for _ in range(chunk_size):
        if deque_obj:
          chunk.append(deque_obj.popleft())
      # Yield the chunk
      yield chunk
input_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chunk_size = 3
chunks = list(split_list(input_list, chunk_size))
print(chunks) 

输出

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

deque类允许您轻松地从列表的左侧或右侧移除元素,从而轻松地将列表分割为特定大小的块。代码使用while循环和生成器函数迭代列表,每次生成一个块。当deque为空时,循环中断,这表明所有元素都已被处理。

方法7: 部分赋值

这里有一个例子,你可以轻松地处理大小为N的块列表:

my_list = list(range(10))
chunk_size = 3
while my_list:
    chunk, my_list = my_list[:chunk_size], my_list[chunk_size:]
    print(chunk)

输出

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

到此这篇关于Python实现将列表拆分为大小为N的块的文章就介绍到这了,更多相关Python拆分列表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python网络爬虫之HTTP原理

    Python网络爬虫之HTTP原理

    在写爬虫之前,我们还需要了解一些基础知识,如HTTP原理、网页的基础知识、爬虫的基本原理、Cookies的基本原理等。本文中,我们就对这些基础知识做一个简单的总结,需要的朋友参考一下
    2023-04-04
  • python flask安装和命令详解

    python flask安装和命令详解

    Flask是使用Python编写的Web微框架,这篇文章主要介绍了python flask安装和命令,需要的朋友可以参考下
    2019-04-04
  • Python实现简单的可逆加密程序实例

    Python实现简单的可逆加密程序实例

    这篇文章主要介绍了Python实现简单的可逆加密程序,实例分析了Python实现可逆加密的原理与相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • Flask  request 对象介绍

    Flask  request 对象介绍

    本文介绍 Flask  request 对象,一个完整的 HTTP 请求,包括客户端向服务端发送的Request 请求和服务器端发送 Response 响应.为了能方便访问获取请求及响应报文信息,Flask 框架提供了一些内建对象,下面就来说一下 Flask 针对请求提供内建对象reques,需要的朋友可以参考一下
    2021-11-11
  • Python抽象和自定义类定义与用法示例

    Python抽象和自定义类定义与用法示例

    这篇文章主要介绍了Python抽象和自定义类定义与用法,结合实例形式分析了Python抽象方法、抽象类相关功能、定义、用法及相关操作注意事项,需要的朋友可以参考下
    2018-08-08
  • pandas数据拼接的实现示例

    pandas数据拼接的实现示例

    这篇文章主要介绍了pandas数据拼接的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Python爬虫PyQuery库基本用法入门教程

    Python爬虫PyQuery库基本用法入门教程

    这篇文章主要介绍了Python爬虫PyQuery库基本用法,结合实例形式较为详细的分析了pyQuery库字符串初始化、打开网页、css属性、标签内容等获取、DOM基本操作等相关技巧与使用注意事项,需要的朋友可以参考下
    2018-08-08
  • Pytorch mask-rcnn 实现细节分享

    Pytorch mask-rcnn 实现细节分享

    这篇文章主要介绍了Pytorch mask-rcnn 实现细节分享,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python数据类型最全知识总结

    Python数据类型最全知识总结

    学习一门语言,往往都是从Hello World开始. 但是笔者认为,在一个黑框框中输出一个“你好,世界”并没有什么了不起,要看透事物的本质,熟悉一门语言,就要了解其底层,就是我们常常说的基础,本篇从python中的数据类型开始,需要的朋友可以参考下
    2021-05-05
  • python中matplotlib调整图例位置的方法实例

    python中matplotlib调整图例位置的方法实例

    在matplotlib中,一般图例默认是在图表内部的,如果要放置到图例外面,需要对坐标进行指定,下面这篇文章主要给大家介绍了关于python中matplotlib调整图例位置的相关资料,需要的朋友可以参考下
    2022-06-06

最新评论