Python|使用交替的 0 和 1 进行列表初始化
使用单个数字初始化列表是一个通用问题,其解决方案已被多次处理。但有时我们需要使用交替重复 K 号的元素来初始化列表。次。这在需要在列表中预设数据的 ML 或 AI 算法中有用例。让我们讨论解决这个问题的某些方法。
方法#1:使用列表推导
在这种方法中,我们在列表中交替插入元素,每个元素出现的特定次数。它将两次出现的元素与特定出现的元素的计数总和的剩余部分用于循环计算。
# Python3 code to demonstrate
# to perform cyclic initialization
# using list comprehension
# count of 1
count_1 = 4
# count of 0
count_0 = 3
# total length of list
size = 14
# initializing list cyclically
# using list comprehension
test_list = [ 1 if i % (count_1 + count_0) < count_1
else 0 for i in range(size) ]
# printing list after change
print ("The list after initializing : " + str(test_list))
输出:
The list after initializing : [1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0]
方法#2:使用itertools.cycle() + itertools.islice()
这是我们可以执行循环初始化的最 Pythonic 的方式。使用cycle
函数以循环方式将列表的每个部分切成分配的元素大小。
# Python3 code to demonstrate
# to perform cyclic initialization
# using itertools.cycle() + itertools.islice()
import itertools
# count of 1
count_1 = 4
# count of 0
count_0 = 3
# total length of list
size = 16
# getting pattern
pattern = [1] * count_1 + [0] * count_0
# initializing list cyclically
# using itertools.cycle() + itertools.islice()
test_list = list(itertools.islice(itertools.cycle(pattern), size))
# printing list after change
print ("The list after initializing : " + str(test_list))
输出:
The list after initializing : [1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1]