Python中的for循环是我们非常经常使用的语句,for 循环用于迭代序列(即列表,元组,字典,集合或字符串),会将序列里面的值依次取出,有些时候我们需要循序一次取值多个元素就不行了,所以这篇文章来分享下Python for 循环每次从列表中取指定个数元素方法:我们可以使用range() 函数获取列表长度然后指定步长配合列表索引取值的方式来实现,下面是示例代码:
示例代码
range() 函数简介
Python3 range() 函数返回的是一个可迭代对象(类型是对象),不是列表类型, 所以打印的时候不会打印列表。
如果需要把 range() 返回的可迭代对象转为一个列表,则可以使用 list() 函数,Python3 list() 函数是对象迭代器,返回的变量类型为列表。
在Python2 range() 函数返回的是列表。
函数语法
range(stop)
range(start, stop[, step])
参数说明
- start: 计数从 start 开始。默认是从 0 开始。例如 range(5) 等价于 range(0, 5)
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是 [0, 1, 2, 3, 4] 没有 5
- step:步长,默认为 1。例如:range(0, 5) 等价于 range(0, 5, 1)
实现思路
使用range函数根据取值列表的长度生成一个序列,序列的起始值为0,结束值为列表的长度。
然后先确定每次需要取出的元素个数,将这个值设置为循环的步长,作为每次取值的切片索引。
起始索引为range函数生成的值,结束索引的则是起始索引加上步长,这样就可以实现Python for 循环每次从列表中取指定个数元素了。
for 循环列表取指定个数元素示例代码
# -*- coding: utf-8 -*-
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list_len = len(num_list)
for i in range(0, list_len, 2):
# print(i) # 0 2 4 6 8
print(num_list[i:i + 2])
输出结果
[1, 2]
[3, 4]
[5, 6]
[7, 8]
[9, 10]
封装函数
# -*- coding: utf-8 -*-
def get_elements(lst, step):
"""
每次从列表中取出指定个数的元素。
参数:
lst (list): 输入的列表。
step (int): 每次需要取出的元素个数。
返回:
list: 包含取出元素的新列表。
"""
result = []
for i in range(0, len(lst), step):
result.append(lst[i:i + step])
return result
调用示例
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list_step = 3
print(get_elements(num_list, list_step))
输出结果
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
Python 列表相关文章
Python enumerate() 函数,Python将列表转换为索引:元素的字典
python sort()函数详解 – python列表排序函数