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(会报错)?
主要问题是为什么要写[]

因为你一开始的arr只是一个一维列表[],所以第一个循环其实是为第二个循环准备需要用到的空列表,你要是append(x)的话相当于arr在第一层第一个循环后变成[0],然后在第二层的循环里arr[x]=arr[0]=0就是一个数,没办法append 参考技术A 第一个for循环就是为了把attr初始化成[[], [], [], []]。 参考技术B 因为x是确定维度的,如果是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循环创建二维列表?的主要内容,如果未能解决你的问题,请参考以下文章

python中为啥我的for循环里嵌套的if只能循环一次?

使用 For 循环的 Django Python 模板嵌套列表

求大神支招,python循环打印两个嵌套列表组合

Python打破嵌套的for循环并重新启动while循环

用于在 python 中创建列表的单行非嵌套 for 循环

Python顶层for循环只运行一次而不是遍历列表