[英]Is there a more efficient way to slice a list out of the center of another list?
我写了这段代码来从另一个列表的中心切出一个列表,它似乎有效,但我觉得有可能更整洁、更有效地做到这一点(可能通过列表理解)?
def get_middle(num, val_list):
idx_val = (int(num/2) , int(num/2 + num%2))
center_idx = int((len(val_list) - 1)/2)
idx_one, idx_two = center_idx-idx_val[0], center_idx+idx_val[1]
return val_list[idx_one:idx_two]
test_list = [1,2,3,4,5,6,7]
test_num = 3
new_list = get_middle(test_num , test_list )
print(new_list)
上面代码的输出是: [3, 4, 5]
代码:
def get_middle(num, sequence):
m = (len(sequence) - 1)//2 - num//2
return sequence[m:m+num]
test_list = [1, 2, 3, 4, 5, 6, 7]
test_num = 3
print(get_middle(test_num, test_list))
输出:
[3, 4, 5]
是的,您可以在一行中完成。
test_list[len(test_list)//2-test_num//3:len(test_list)//2+test_num//3+1]
当然还要根据test_num的奇偶校验和列表长度的奇偶校验做一些调整。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.