📜  Python|在给定范围内交换子列表

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

Python|在给定范围内交换子列表

交换单个数字的问题可以扩展到拥有列表并在整个范围内执行交换的问题,这在一段时间内可能是一个有用的实用程序。这适用于各个领域的任何类型的数据操作。让我们讨论可以执行此操作的某些方式。

方法#1:使用列表切片和交换
可以交换列表的方式与在Python中交换变量的方式相同,但不同之处在于,我们传递了一个切片列表来交换,而不是变量。

# Python3 code to demonstrate
# swapping sublist
# using list swapping and slicing
  
# initializing list 
test_list = [1, 4, 5, 8, 3, 10, 6, 7, 11, 14, 15, 2]
  
# printing the original list
print ("The original list is : " + str(test_list))
  
# using list swapping and slicing 
# swapping sublist
test_list[1 : 3], test_list[6 : 8] = test_list[6 : 8], test_list[1 : 3]
  
# printing result
print ("The list after sublist swapping : " + str(test_list))
输出:
The original list is : [1, 4, 5, 8, 3, 10, 6, 7, 11, 14, 15, 2]
The list after sublist swapping : [1, 6, 7, 8, 3, 10, 4, 5, 11, 14, 15, 2]


方法#2:使用slice() + itertools.chain.from_iterable()
slice函数可以执行切片功能以从列表中提取子列表,而 from_iterable函数有助于执行交换功能。

# Python3 code to demonstrate swapping 
# sublist using slice() + itertools.chain.from_iterable()
import itertools
  
# initializing list 
test_list = [1, 4, 5, 8, 3, 10, 6, 7, 11, 14, 15, 2]
  
# printing the original list
print ("The original list is : " + str(test_list))
  
# using slice() + itertools.chain.from_iterable()
# swapping sublist
slice_1 = test_list[1 : 3]
slice_2 = test_list[6 : 8]
slice_temp = [slice(0, 1), slice(6, 8), slice(3, 6),
              slice(1, 3), slice(8, len(test_list))]
  
res = list(itertools.chain.from_iterable([test_list[i]
                                for i in slice_temp]))
  
# printing result
print ("The list after sublist swapping : " + str(res))
输出:
The original list is : [1, 4, 5, 8, 3, 10, 6, 7, 11, 14, 15, 2]
The list after sublist swapping : [1, 6, 7, 8, 3, 10, 4, 5, 11, 14, 15, 2]