为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 中创建一个包含两个变量的循环,其中一个变量仅在每第 n 次循环后发生变化

在 Python 中创建一个包含两个变量的循环,其中一个变量仅在每第 n 次循环后发生变化

幕布斯7119047 2023-06-06 15:04:27
我正在尝试编写一个程序,其中有两个列表和一个字典:dict = {'fruit1' : 'apple', 'fruit2' :'banana', 'fruit3':'cherry' ....and so on} list1 = ['a','b','c','d','e'....]list2 = ['fruit1', 'fruit2','fruit3'....]我有一个看起来像这样的程序。[这根本不对,但它有助于代表我想要得到的结果]。for obj1 in list1:    for obj_2 in list2:        print(obj1)        print(obj_2)        print(dict[obj_2])我的需要是以每第n个循环改变一次obj_2但obj_1改变每个循环的方式循环它。我怎样才能做到这一点?所以我的结果看起来像(考虑第 n 个循环是第 3 个循环):afruit1applebfruit1applecfruit1appledfruit2bananaefruit2bananaffruit2bananagfruit3cherry...
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

使用计数器变量而不是嵌套循环。每次通过循环增加计数器,当它到达时n将其包装回0并将索引增加到list2.


n = 3

list2_index = 0

counter = 0

for obj1 in list1:

    obj_2 = list2[list2_index]

    print(obj1)

    print(obj_2)

    print(dict[obj_2])

    counter += 1

    if counter == n:

        counter = 0

        list2_index += 1

顺便说一句,不要用作dict变量名,它是内置类型的名称。


查看完整回答
反对 回复 2023-06-06
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

因此,您要做的就是更改两个 for 循环的位置。


#BTW it isn't adviced to use reserved keywords for variable names so dont use Dict for a variable name

myDict = {'fruit1' : 'apple', 'fruit2' :'banana', 'fruit3':'cherry'} 

list1 = ['a','b','c','d','e']

list2 = ['fruit1', 'fruit2','fruit3']


#so in this nested loop obj2 only changs after  the n loops (n being the length of list1)

#which is after list1 is complete and it does that over and over 

#until list2 is complete

for obj2 in list2:

    for obj1 in list1:

        print(obj1)

        print(obj2)

        print(myDict[obj2])

如果这就是您的意思,那么这里是另一段代码。


myDict = {'fruit1' : 'apple', 'fruit2' :'banana', 'fruit3':'cherry'} 

list1 = ['a','b','c','d','e']

list2 = ['fruit1', 'fruit2','fruit3']


#a variable to keep track of the nth loop

nthLoop = 1 

for obj2 in list2:

    for obj1 in list1:

        #if you print for three times which is what you wanted for your nthloop to be 

        #then break, which will break out of this nested loop allowing to only print 3 times and also set the 

        #nthLoop back to zero so that it will work nicely for the next iteration

        if nthLoop > 3:

            nthLoop = 0

            break

        print(obj1)

        print(obj2)

        print(myDict[obj2])

        nthLoop += 1


查看完整回答
反对 回复 2023-06-06
  • 2 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信