📜  Python - 重复列表中的替代元素

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

Python - 重复列表中的替代元素

很多时候,我们有这个特殊的用例,我们需要重复列表 K 次的替代元素。已经讨论了制作双重克隆的问题,但是这个问题扩展到允许灵活的变量来定义元素必须重复的次数。让我们讨论可以执行此操作的某些方式。

方法#1:使用列表推导
此特定任务通常需要 2 个循环,列表理解可以在一行中执行此特定任务,从而减少代码行数并提高代码可读性。

# Python3 code to demonstrate 
# Alternate Element Repetition
# using list comprehension
  
# initializing list of lists
test_list = [4, 5, 6]
  
# printing original list 
print("The original list : " + str(test_list))
  
# declaring magnitude of repetition
K = 3
  
# using list comprehension
# Alternate Element Repetition
res = [ele for idx, ele in enumerate(test_list) for i in range(K) if idx % 2 == 0]
  
# printing result 
print("The list after alternate repeating elements : " + str(res))
输出 :
The original list : [4, 5, 6]
The list after alternate repeating elements : [4, 4, 4, 6, 6, 6]

方法#2:使用itertools.chain.from_iterable() + itertools.repeat()
这个特殊问题也可以使用 itertools 库的Python内置函数来解决。顾名思义,repeat函数将重复和分组到列表中的任务由 from_iterable函数完成。

# Python3 code to demonstrate 
# Alternate Element Repetition
# using itertools.chain.from_iterable() + itertools.repeat()
import itertools
  
# initializing list of lists
test_list = [4, 5, 6]
  
# printing original list 
print("The original list : " + str(test_list))
  
# declaring magnitude of repetition
K = 3
  
# using itertools.chain.from_iterable() + itertools.repeat()
# Alternate Element Repetition
res = list(itertools.chain.from_iterable(itertools.repeat(ele, K) for idx, ele in enumerate(test_list) if idx % 2 == 0))
  
# printing result 
print("The list after alternate repetition elements : " + str(res))
输出 :
The original list : [4, 5, 6]
The list after alternate repeating elements : [4, 4, 4, 6, 6, 6]