在python中使用给定索引列表迭代列表
我有一个列表在python中使用给定索引列表迭代列表,python,list,loops,Python,List,Loops,我有一个列表a=[-1,2,1,2,0,2,1,-3,4,3,0,-1]和B=[0,7,11]。列表B显示负整数索引的索引 如何返回列表中每个片段的总和:例如A[0+1:7]和A[7+1:11]使用,可以将[0,7,11]转换为所需的片段索引对(1:7/8:11): 更新 无需定义B即可实现所需功能的另一种方法是: 键函数用于分割0、正数和负数。使用,您可以将[0,7,11]转换为所需的切片索引对(1:7/8:11): 更新 无需定义B即可实现所需功能的另一种方法是: 键函数用于分割0、正数
a=[-1,2,1,2,0,2,1,-3,4,3,0,-1]
和B=[0,7,11]
。列表B
显示负整数索引的索引
如何返回列表中每个片段的总和:例如A[0+1:7]
和A[7+1:11]
使用,可以将[0,7,11]
转换为所需的片段索引对(1:7
/8:11
):
更新 无需定义
B
即可实现所需功能的另一种方法是:
键
函数用于分割0、正数和负数。使用,您可以将[0,7,11]
转换为所需的切片索引对(1:7
/8:11
):
更新 无需定义
B
即可实现所需功能的另一种方法是:
键
函数用于分割0、正数和负数。您可以像使用单行列表一样实现
[sum(A[i+1:B[B.index(i)+1]]) if i != B[-1] else sum(A[i+1:-1]) for i in B]
结果
[8, 7, 0]
[8, 7]
如果您不想要最后一个切片和,请使用此选项
[sum(A[i+1:B[B.index(i)+1]]) for i in B if i != B[-1]]
结果
[8, 7, 0]
[8, 7]
您可以像使用单行列表理解一样实现
[sum(A[i+1:B[B.index(i)+1]]) if i != B[-1] else sum(A[i+1:-1]) for i in B]
结果
[8, 7, 0]
[8, 7]
如果您不想要最后一个切片和,请使用此选项
[sum(A[i+1:B[B.index(i)+1]]) for i in B if i != B[-1]]
结果
[8, 7, 0]
[8, 7]
谢谢你的回答。它可以工作,但是如果A=[-8,3,0,5,-3,12]和B=[0,4]不返回12?@KevinOelen,
A[0+1:4]=[3,0,5]
@KevinOelen,如果你想得到[12]
,你需要指定B=[4,6]
或B=[0,4,6]
@KevinOelen,在答案中运行代码之前运行这个命令来处理这种情况:If[-B]
@KevinOelen,我更新了答案,加入了不需要你自己定义B
(负数索引)的其他版本。谢谢你的回答。它可以工作,但是如果A=[-8,3,0,5,-3,12]和B=[0,4]不返回12?@KevinOelen,A[0+1:4]=[3,0,5]
@KevinOelen,如果你想得到[12]
,你需要指定B=[4,6]
或B=[0,4,6]
@KevinOelen,在答案中运行代码之前运行这个命令来处理这种情况:If[-B]
@KevinOelen,我更新了答案,加入了不需要你自己定义B
(负数索引)的其他版本。谢谢你的回答。你能看到上面的注释和答案吗?它应该返回12,因为-3a[0+1:4]=[3,0,5]
后面有一个正整数?对吧?谢谢你的回答。你能看到上面的注释和答案吗?它应该返回12,因为-3a[0+1:4]=[3,0,5]
后面有一个正整数?正确的?