📜  Python - 与其他同步拆分列表

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

Python - 与其他同步拆分列表

有时,在处理Python数据时,我们可能会遇到需要对字符串进行拆分的问题,该字符串与其他列表中的元素有映射,因此需要对因拆分而形成的不同单词进行映射。这类问题比较特殊,但可以在很多领域都有应用。让我们讨论可以执行此任务的某些方式。

方法 #1:使用map() + zip() + enumerate() + split()
上述功能的组合可以用来解决这个问题。在此,我们使用 split() 执行拆分值的任务,并使用 zip() 和 map() 执行相应的元素映射。使用 enumerate() 进行迭代。

# Python3 code to demonstrate working of 
# Synchronized Split list with other
# Using map() + zip() + enumerate() + split()
  
# initializing list
test_list = [5, 6, 3, 7, 4] 
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing String list 
str_list = ['Gfg', 'is best', 'I love', 'Gfg', 'and CS']
  
# Synchronized Split list with other
# Using map() + zip() + enumerate() + split()
temp = list(map(list, zip(*[(idx, sub) for idx, val in 
            enumerate(map(lambda x: x.split(), str_list), 1) for sub in val])))
res = []
for ele in temp[0]:
    res.append(test_list[ele - 1])
  
# printing result 
print("Mapped list elements : " + str(res))
输出 :
The original list is : [5, 6, 3, 7, 4]
Mapped list elements : [5, 6, 6, 3, 3, 7, 4, 4]

方法 #2:使用chain.from_iterables() + zip()
这是可以执行此任务的另一种方式。在此,我们使用 chain.from_iterables() 执行展平任务,并使用 zip() 执行并行迭代。

# Python3 code to demonstrate working of 
# Synchronized Split list with other
# Using chain.from_iterables() + zip()
from itertools import chain
  
# initializing list
test_list = [5, 6, 3, 7, 4] 
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing String list 
str_list = ['Gfg', 'is best', 'I love', 'Gfg', 'and CS']
  
# Synchronized Split list with other
# Using chain.from_iterables() + zip()
res = list(chain.from_iterable([[sub1] * len(sub2.split()) for sub1, sub2 in zip(test_list, str_list)]))
  
# printing result 
print("Mapped list elements : " + str(res))
输出 :
The original list is : [5, 6, 3, 7, 4]
Mapped list elements : [5, 6, 6, 3, 3, 7, 4, 4]