我编写了这段代码以将列表切成另一个列表的中心,并且似乎可以正常工作,但是我觉得可能可以更整齐,更有效地执行此操作(可能是通过列表理解)?
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的奇偶性和列表长度的奇偶性进行一些调整。