使用不同的步骤组合从range创建的两个列表,并对一定数量的索引重复值

2024-09-26 22:49:59 发布

您现在位置:Python中文网/ 问答频道 /正文

  1. 设置计数时,第一个列表从零开始,递增20,直到计数用尽
  2. 使用相同的计数,第二个列表从1开始,对前五个索引重复1,然后 在100处递增1。重复此循环,直到列表用尽

aaa应从0开始递增20
bbb应该从1开始每5个索引增加1

结果:

aaa00_bbb1
aaa20_bbb1
aaa40_bbb1
aaa60_bbb1
aaa80_bbb1
aaa100_bbb2
aaa120_bbb2
aaa140_bbb2
aaa160_bbb2
aaa180_bbb2
aaa200_bbb3
aaa220_bbb3
aaa240_bbb3
aaa260_bbb3
aaa280_bbb3
aaa300_bbb4
aaa320_bbb4 ...

我试过这样的方法,但我不知道如何让listbbb工作

def my_func_a(cnt):
    mylist = []
    for i in range(0, cnt, 20):
        value = 'aaa' + str(i)
        mylist.append(value)
    return mylist

aaa = my_func_a(500)
# print(aaa)

def my_func_b(cnt):
    mylist = []
    for i in range(0, cnt, 20):
        value = '_bbb' + str(i)
        mylist.append(value)
    return mylist

bbb = my_func_b(500)
# print(bbb)

combined = list(map(''.join, zip(map(str, aaa), bbb)))
print(combined)

输出:

['aaa0_bbb0', 'aaa20_bbb20', 'aaa40_bbb40', 'aaa60_bbb60', 'aaa80_bbb80', 'aaa100_bbb100', 'aaa120_bbb120', 'aaa140_bbb140', 'aaa160_bbb160', 'aaa180_bbb180', 'aaa200_bbb200', 'aaa220_bbb220', 'aaa240_bbb240', 'aaa260_bbb260', 'aaa280_bbb280', 'aaa300_bbb300', 'aaa320_bbb320', 'aaa340_bbb340', 'aaa360_bbb360', 'aaa380_bbb380', 'aaa400_bbb400', 'aaa420_bbb420', 'aaa440_bbb440', 'aaa460_bbb460', 'aaa480_bbb480']

用itertools试过一些东西,离我更近了,但我还是无法工作

from itertools import chain, repeat, cycle

def myfunc(cnt):
    mylist = []
    for i in range(0, cnt+20, 20):
        value = 'aaa' + str(i) + '_'
        mylist.append(value)
    return mylist

inventory_list = myfunc(500)
# print(inventory_list)

inventory = list(zip(inventory_list, chain(repeat(1,5), cycle(range(2, 3)))))
print(inventory)

输出:

[('aaa0_', 1), ('aaa20_', 1), ('aaa40_', 1), ('aaa60_', 1), ('aaa80_', 1), ('aaa100_', 2), ('aaa120_', 2), ('aaa140_', 2), ('aaa160_', 2), ('aaa180_', 2), ('aaa200_', 2), ('aaa220_', 2), ('aaa240_', 2), ('aaa260_', 2), ('aaa280_', 2), ('aaa300_', 2), ('aaa320_', 2), ('aaa340_', 2), ('aaa360_', 2), ('aaa380_', 2), ('aaa400_', 2), ('aaa420_', 2), ('aaa440_', 2), ('aaa460_', 2), ('aaa480_', 2), ('aaa500_', 2)]

Tags: valuemyrangelistfuncinventoryprintbbb
3条回答

这是你需要的吗

b = 0
a = 0

for i in range(5):
    for j in range(a, a + 5 * 20, 20):
        print("aaa" + str(j) + "_bbb" + str(i))
    a = j

# output

aaa0_bbb0
aaa20_bbb0
aaa40_bbb0
aaa60_bbb0
aaa80_bbb0
aaa80_bbb1
aaa100_bbb1
aaa120_bbb1
aaa140_bbb1
aaa160_bbb1
aaa160_bbb2
aaa180_bbb2
aaa200_bbb2
aaa220_bbb2
aaa240_bbb2
aaa240_bbb3
aaa260_bbb3
aaa280_bbb3
aaa300_bbb3
aaa320_bbb3

可以这样构造生成器:

代码:

def by_one_5_times():
    i = 1
    while True:
        for j in range(5):
            yield i
        i += 1

然后像这样构建字符串:

for numbers in zip(range(0, 400, 20), by_one_5_times()):
    print('aaa{:02d}_bbb{}'.format(*numbers))

结果:

aaa00_bbb1
aaa20_bbb1
aaa40_bbb1
aaa60_bbb1
aaa80_bbb1
aaa100_bbb2
aaa120_bbb2
aaa140_bbb2
aaa160_bbb2
aaa180_bbb2
aaa200_bbb3
aaa220_bbb3
aaa240_bbb3
aaa260_bbb3
aaa280_bbb3
aaa300_bbb4
aaa320_bbb4
aaa340_bbb4
aaa360_bbb4
aaa380_bbb4
my_list = ['aaa' + str(i) + '_bbb' + str(j) 
           for i in range(0, 100, 20) for j in range(1, 100) 
           for _ in range(5)]

相关问题 更多 >

    热门问题