python 使用嵌套的for循环创建二维列表?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 使用嵌套的for循环创建二维列表?相关的知识,希望对你有一定的参考价值。
for x in range(4):
arr.append([])
for y in range(5):
arr[x].append(y)
打印arr结果为:[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
问题:为什么第一个append括号里面要写[]而不是x(会报错)?
主要问题是为什么要写[]
Python顶层for循环只运行一次而不是遍历列表
【中文标题】Python顶层for循环只运行一次而不是遍历列表【英文标题】:Python top layer for loop only running once instead of iterating over list 【发布时间】:2021-03-17 10:38:00 【问题描述】:我正在尝试遍历列表,如果项目及其各自的已售商品数量,以便创建上个月每件商品的已售商品列表。为此,我创建了一个嵌套的 for 循环,该循环为每个项目获取上个月售出的项目并将其附加到列表中。但是,当我运行循环时,顶层仅运行一次,并且不会遍历其余项目。当计数器应该是列表的 len 时,计数器的输出为 1
count=0
obj=zip(Grouped_DF['item_id'], Grouped_DF['item_cnt_day'])
item_cnt_day_minus_1=[]
counter=0
for item, itm_cnt in obj:
counter+=1
for x,y in obj:
if item==x and count==0:
count+=1
item_cnt_day_minus_1.append(0)
if item==x and count==1:
item_cnt_day_minus_1.append(itm_cnt)
count+=1
count=y
if item==x and count>1:
item_cnt_day_minus_1.append(y)
count=y
count=0
【问题讨论】:
顺便说一句,我确定count+=1; count=y
不是您在第二个 if
中想要的。
好的,你正在通过同一个zip
对象迭代两次。
【参考方案1】:
您需要为每个 for 循环生成单独的 zip
对象:
item_cnt_day_minus_1=[]
counter = 0
count = 0
for item, itm_cnt in zip(['a', 'b', 'c'], [42, 43, 44]): # sample data I invented
counter += 1
for x,y in zip(['a', 'b', 'c'], [42, 43, 44]):
if item == x and count == 0:
count += 1
item_cnt_day_minus_1.append(0)
if item == x and count == 1:
item_cnt_day_minus_1.append(itm_cnt)
count += 1
count = y
if item == x and count > 1:
item_cnt_day_minus_1.append(y)
count = y
count=0
print(counter, item_cnt_day_minus_1)
输出:
3 [0, 42, 42, 0, 43, 43, 0, 44, 44]
【讨论】:
以上是关于python 使用嵌套的for循环创建二维列表?的主要内容,如果未能解决你的问题,请参考以下文章