Python 制作列表子集和的列表
我们有一个列表,上面写着Python 制作列表子集和的列表,python,arrays,list,Python,Arrays,List,我们有一个列表,上面写着list1=[2,1,4] 我用下面的代码制作了一个名为subl的二维列表,它是list1的子集 def子目录(列表1): 子列表=[]] 对于范围(0,len(列表1)-1)中的i: 对于范围(i+1,len(列表1)+1)内的j: sub=list1[i:j] sublist.append(sub) 返回子列表 我得到的结果是 subl=sub_列表(列表1)\[[],[2],[2,1],[2,1,4],[1],[1,4]] 现在我想创建一个数组,其中包含subl
list1=[2,1,4]
我用下面的代码制作了一个名为subl的二维列表,它是list1的子集
def子目录(列表1):
子列表=[]]
对于范围(0,len(列表1)-1)中的i:
对于范围(i+1,len(列表1)+1)内的j:
sub=list1[i:j]
sublist.append(sub)
返回子列表
我得到的结果是
subl=sub_列表(列表1)\[[],[2],[2,1],[2,1,4],[1],[1,4]]
现在我想创建一个数组,其中包含subl中列表元素的和
我写了以下代码,但它不能正常工作
sum=[];
对于范围(0,len(subl)-1中的i:
l=len(subl[i])
t=0
对于范围(0,l-1)内的j:
t=t+subl[i][j]
追加总和(t)
打印(总和)
我得到的结果是
[0, 0, 2, 3, 0]
而期望的输出应该是
[0,2,3,7,1,5]
我想第二个for循环有点不对劲。请帮忙 之所以不起作用,是因为您正在向上循环到
i=len(subl)-2
和j=l-2
,这使得最后一个元素不被计数,因此您可以将范围(0,len(subl))中的i的两个循环更改为:
和范围(0,l)中的j的。另外,建议不要使用sum
作为变量名,因为它是python中的内置函数,可能会产生错误。因此,更正后的代码为:
list1 = [2, 1, 4]
def sub_lists(list1):
sublist = [[]]
for i in range(0, len(list1) - 1):
for j in range(i + 1, len(list1) + 1):
sub = list1[i:j]
sublist.append(sub)
return sublist
subl=sub_lists(list1)
s=[];
for i in range(0, len(subl)):
l=len(subl[i])
t=0;
for j in range(0, l):
t=t+subl[i][j]
s.append(t)
print(s)
建议您使用map
和sum
list1 = [2, 1, 4]
def sub_lists(list1):
sublist = [[]]
for i in range(0, len(list1) - 1):
for j in range(i + 1, len(list1) + 1):
sub = list1[i:j]
sublist.append(sub)
return sublist
subl=sub_lists(list1)
s=list(map(sum, subl))
#same as [sum(l) for l in subl]
print(s)
或者,如果您的主要目的是子列表的总和,则只需添加@deadshot所述的总和:
list1 = [2, 1, 4]
def sum_of_sublists(list1):
sublist = [0]
for i in range(0, len(list1) - 1):
for j in range(i + 1, len(list1) + 1):
sub = list1[i:j]
sublist.append(sum(sub))
return sublist
print(sum_of_sublists(list1))
所有产出:
[0,2,3,7,1,5]
您的代码不起作用,因为您的范围不正确,请分别使用范围(0,len(subl))
和范围(0,l)
导入numpy作为np
列表1=[2,1,4]
subl=子列表(列表1)
您可以使用列表理解来查找子列表的总和:
ans=[int(np.sum(l))表示subl中的l]
输出:
ans # prints [0, 2, 3, 7, 1, 5]
这些并不是真正的子集,更像是范围(0,l-1)中j的连续值的子集,从到范围(0,l)中j的子集:
为什么追加列表只需添加子列表。追加(sum(sub))
您也可以尝试,[sum(x)for x in subl]