我是python和编码的新手,我正在尝试创建一个带范围的“ for”循环,类似于此循环:
for n in range(0,number_of_files)
for i in range(0,5)
但是这一次,要使控制我的循环为n的每次迭代加5,从而产生如下结果:
i=[0,1,2,3,4,5](next iteration of n)[6,7,8,9,10],etc...
我可以链接范围,但是我不知道文件夹中有多少文件,这会增加很多代码。
更新:
即使它不是最优雅的解决方案,我也成功获得了想要的东西,我使用了其中一个答案的结构:
i = 0
for n in range(0,number_of_files):
for ii in range(i,i+5):
{code}
i += 5
我想做的是:
遍历一个文件夹中的所有excel文件,取此人的姓名,然后 创建一个包含所有名称的新excel文件。
需要2个循环,第一个循环将遍历所有文件并执行其操作。第二个需要堆叠名称,但要根据第一个文件中的行数(每个人的行数不相同)进行堆叠。总之,结果看起来像这样。
**name / surname / age / date / time / statistics**
patient A/ surname A / age A / date / hours / statistics 1
patient A/ surname A / age A / date / hours / statistics 2
patient A/ surname A / age A / date / hours / statistics 3
patient A/ surname A / age A / date / hours / statistics 4
patient B/ surname B / age B / date / hours / statistics 1
patient C/ surname C / age C / date / hours / statistics 1
patient C/ surname C / age C / date / hours / statistics 1
答案 0 :(得分:1)
使用itertools.count
:
from itertools import count
def chunked_range(num_of_chunks, size_of_chunk):
for i in range(num_of_chunks):
yield [*iter(lambda c=count(): i * size_of_chunk + next(c), size_of_chunk * (i + 1))]
for i in chunked_range(3, 5):
print('i =', i)
打印:
i = [0, 1, 2, 3, 4]
i = [5, 6, 7, 8, 9]
i = [10, 11, 12, 13, 14]
答案 1 :(得分:0)
以下给出了预期的结果:
x = 0
for n in range(0,number_of_files):
for i in range(x,x+5):
###
x+=5
答案 2 :(得分:0)
您可以按恒定因子步进外循环:
number_of_files = 3
step = 5
for n in range (0, number_of_files * step, step):
for i in range(0, step):
j = i + n
print(j)
# code goes here
输出(按预期):
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
答案 3 :(得分:0)
是的,在不知道您期望输出或实现的目标的情况下,很难确定所需的解决方案。例如,从字面上阅读您的问题,我建议以下内容:
for n in range(0,number_of_files)
i = n (or just n)
如果需要每5或6个文件执行一次操作(0-5 = 6次迭代,但6-10次),这将为您列出的结果(排序)(见下文),无论退出多少文件= 5次迭代),然后(n mod 6或5)== 0将起作用
n=[0,1,2,3,4,5](continued iteration)[6,7,8,9,10],etc...
如上所述,您的问题前后矛盾且不完整,以上内容说明了为什么会这样,以及为什么很难回答这个问题-也许,如果您对问题进行了调整,那么您会得到假设不同的结果想要的假设尚未回答
答案 4 :(得分:-1)
我认为您要尝试的是在每次内循环通过时将范围增加5。
pckgs = c("readr", "dplyr")
sapply(pckgs, library, character.only = TRUE)
这将循环浏览文件并增加5。
答案 5 :(得分:-1)
您想使累加器的迭代次数为i
counter = 0
for n in range(0,number_of_files)
for i in range(0,5)
#Code goes here
counter += 5