如何拆分每个子列表中具有固定数量项目的列表
How to split a list with a fixed number of items in each sublist
我有一个列表说:
my_list=[1,2,3,1,5,6,7,5,9,9]
我想创建子列表,每个子列表包含 4 个 items.The 子列表的数量将取决于原始列表的长度 (my_list),但每个子列表应该有最大值4 项。
即
a1=[1,2,3,1]
a2=[5,6,7,5]
a3=[9,9]
所以我这样做了:
n=4
final = [my_list[i * n:(i + 1) * n] for i in range((len(my_list) + n - 1) // n )]
print (final)
现在我想检查是否有多少元素在子列表中重复并将其附加到新列表,比如 q.For 我这样做了:
我尝试使用:
q=[]
for i in range(len(final)):
for a in final[i]:
k=final[i].count(a)
q.append(k)
print(q)
但这给了我一个很长的列表,如下所示:
[2, 1, 1, 2, 2, 1, 1, 2, 2, 2]
然而我想要的是,一个数字在子列表中重复的总次数,像这样:
l=[3] #for the whole my_list
或
l=[[1],[1],[1]] #specifying for every sub-list
这将为您提供每个原始子列表的计数子列表
q=[]
for i in range(len(final)):
sub_list_q = []
for a in final[i]:
k=final[i].count(a)
for _ in range(k): # Remove duplicates
final[i].remove(a)
if k-1 > 0:
sub_list_q.append(k-1) # Only append if it's a duplicate
q.append(sub_list_q)
print(q)
我认为您可以通过这种方式获得重复元素的数量 - 比较子列表和从中创建的集合:
my_list=[1,2,3,1,5,6,7,5,9,9]
n=4
final = [my_list[i * n:(i + 1) * n] for i in range((len(my_list) + n - 1) // n )]
print (final)
total=0
for el in final:
s=list(set(el))
total+=len(el)-len(s)
print(total)
首先,您可以以更简洁明了的方式定义您的 final
列表理解(imo):
my_list=[1,2,3,1,5,6,7,5,9,9]
final = [my_list[n: n+4] for n in range(0, len(my_list), 4)]
然后,要打印出重复的个数,其实可以对原始列表进行操作,这样会比处理二维数组更简单:
total = len(my_list) - len(set(my_list))
我有一个列表说:
my_list=[1,2,3,1,5,6,7,5,9,9]
我想创建子列表,每个子列表包含 4 个 items.The 子列表的数量将取决于原始列表的长度 (my_list),但每个子列表应该有最大值4 项。 即
a1=[1,2,3,1]
a2=[5,6,7,5]
a3=[9,9]
所以我这样做了:
n=4
final = [my_list[i * n:(i + 1) * n] for i in range((len(my_list) + n - 1) // n )]
print (final)
现在我想检查是否有多少元素在子列表中重复并将其附加到新列表,比如 q.For 我这样做了: 我尝试使用:
q=[]
for i in range(len(final)):
for a in final[i]:
k=final[i].count(a)
q.append(k)
print(q)
但这给了我一个很长的列表,如下所示:
[2, 1, 1, 2, 2, 1, 1, 2, 2, 2]
然而我想要的是,一个数字在子列表中重复的总次数,像这样:
l=[3] #for the whole my_list
或
l=[[1],[1],[1]] #specifying for every sub-list
这将为您提供每个原始子列表的计数子列表
q=[]
for i in range(len(final)):
sub_list_q = []
for a in final[i]:
k=final[i].count(a)
for _ in range(k): # Remove duplicates
final[i].remove(a)
if k-1 > 0:
sub_list_q.append(k-1) # Only append if it's a duplicate
q.append(sub_list_q)
print(q)
我认为您可以通过这种方式获得重复元素的数量 - 比较子列表和从中创建的集合:
my_list=[1,2,3,1,5,6,7,5,9,9]
n=4
final = [my_list[i * n:(i + 1) * n] for i in range((len(my_list) + n - 1) // n )]
print (final)
total=0
for el in final:
s=list(set(el))
total+=len(el)-len(s)
print(total)
首先,您可以以更简洁明了的方式定义您的 final
列表理解(imo):
my_list=[1,2,3,1,5,6,7,5,9,9]
final = [my_list[n: n+4] for n in range(0, len(my_list), 4)]
然后,要打印出重复的个数,其实可以对原始列表进行操作,这样会比处理二维数组更简单:
total = len(my_list) - len(set(my_list))