我有一个函数,使用一个名称列表并读取确定的补丁编号(n),我正在使用yield,我的问题是,当yield完成时,最后一个补丁的大小与其他补丁。我想做的是在第一个补丁中添加第一个补丁中的某些元素(以便我重复),以便所有补丁的大小相同。
first_names = ['Steve', 'Jane', 'Sara', 'Mary','Jack','Bob', 'Bily', 'Boni', 'Chris','Sori', 'Will', 'Won','Li']
def chunks(l, n):
# For item i in a range that is a length of l,
for i in range(0, len(l), n):
# Create an index range for l of n items:
yield l[i:i+n]
list(chunks(first_names, 5))
如果使用上面的调用,则最后一个补丁将仅包含3个名称,我要做的是将其复制“ steve”和“ Jane”,并以5个名称作为其他2个名称补丁。
答案 0 :(得分:2)
一种快速的方法是将n
个项目添加到用于收益的列表的末尾:
first_names = ['Steve', 'Jane', 'Sara', 'Mary','Jack','Bob', 'Bily', 'Boni', 'Chris','Sori', 'Will', 'Won','Li']
def chunks(l, n):
m = l + l[:n]
# For item i in a range that is a length of l,
for i in range(0, len(l), n):
# Create an index range for the longer m list of n items:
yield m[i:i+n]
print(list(chunks(first_names, 5)))
输出:
[['Steve', 'Jane', 'Sara', 'Mary', 'Jack'], ['Bob', 'Bily', 'Boni', 'Chris', 'Sori'], ['Will', 'Won', 'Li', 'Steve', 'Jane']]
答案 1 :(得分:0)
那又怎么样呢?
first_names = ['Steve', 'Jane', 'Sara', 'Mary','Jack','Bob', 'Bily', 'Boni', 'Chris','Sori', 'Will', 'Won','Li']
def chunks(l, n):
# For item i in a range that is a length of l,
for i in range(0, len(l), n):
# Create an index range for l of n items:
c = l[i:i+n]
if len(c) < n:
c += l[:(n - len(c))]
yield c
list(chunks(first_names, 5))