📜  Python|列表中的备用范围切片

📅  最后修改于: 2022-05-13 01:54:56.412000             🧑  作者: Mango

Python|列表中的备用范围切片

列表切片在Python中是非常常见的实用程序,可以轻松地从列表中切片某些元素,但有时,我们需要以非连续方式执行该任务并切片交替范围。让我们讨论如何解决这个特定问题。

方法#1:使用列表推导
列表推导可用于轻松执行此特定任务,因为它可用于运行循环并仅过滤剩余部分超过目标切片大小的一半乘以 2的元素。通过这种方式,我们可以交替提取范围内的切片数字。

# Python3 code to demonstrate
# alternate range slicing 
# using list comprehension
  
# initializing list 
test_list = [2, 4, 6, 8, 9, 10, 12, 16, 18, 20, 7, 30]
  
# printing original list
print("The original list : " + str(test_list))
  
# Select range size 
N = 3
  
# using list comprehension
# alternate range slicing
res = [test_list[i] for i in range(len(test_list)) 
                              if i % (N * 2) >= N]
  
# print result
print("The alternate range sliced list : " + str(res))
输出 :
The original list : [2, 4, 6, 8, 9, 10, 12, 16, 18, 20, 7, 30]
The alternate range sliced list : [8, 9, 10, 20, 7, 30]

方法 #2:使用enumerate() + 列表推导
列表推导也可以与 enumerate函数结合来执行此任务。使用 enumerate 的优点是我们可以跟踪索引和值,它比上述函数更有效,运行时间更短。

# Python3 code to demonstrate
# alternate range slicing 
# using list comprehension + enumerate()
  
# initializing list 
test_list = [2, 4, 6, 8, 9, 10, 12, 16, 18, 20, 7, 30]
  
# printing original list
print("The original list : " + str(test_list))
  
# Select range size 
N = 3
  
# using list comprehension + enumerate()
# alternate range slicing
res = [val for i, val in enumerate(test_list)
                         if i % (N * 2) >= N]
  
# print result
print("The alternate range sliced list : " + str(res))
输出 :
The original list : [2, 4, 6, 8, 9, 10, 12, 16, 18, 20, 7, 30]
The alternate range sliced list : [8, 9, 10, 20, 7, 30]