Python 如何简化此解决方案?

Python 如何简化此解决方案?,python,python-3.x,list,return,list-comprehension,Python,Python 3.x,List,Return,List Comprehension,函数“conjunctions”接收嵌套列表“word_list”。此列表包含多个子列表,每个子列表包含一个单词列表,例如: [[“汤姆”、“劳雷尔”、“默克尔”]、[“杰瑞”、“哈代”、“马克龙”] 所有子列表中的字数都相同。函数必须返回一个字符串列表,其中某个位置的每个元素都是所有子列表中同一位置的所有元素的“and”连词 例如: 连词([[“汤姆”、“劳雷尔”、“默克尔”]、[“杰瑞”、“哈迪”、“马克龙”]] 应该回来 [‘汤姆和杰瑞’、‘劳雷尔和哈代’、‘默克尔和马克龙’] 及 连词(

函数“conjunctions”接收嵌套列表“word_list”。此列表包含多个子列表,每个子列表包含一个单词列表,例如:
[[“汤姆”、“劳雷尔”、“默克尔”]、[“杰瑞”、“哈代”、“马克龙”]

所有子列表中的字数都相同。函数必须返回一个字符串列表,其中某个位置的每个元素都是所有子列表中同一位置的所有元素的“and”连词

例如:
连词([[“汤姆”、“劳雷尔”、“默克尔”]、[“杰瑞”、“哈迪”、“马克龙”]]

应该回来

[‘汤姆和杰瑞’、‘劳雷尔和哈代’、‘默克尔和马克龙’]

连词([[“一”、“苹果”]、[“两”、“橘子”]、[“三”、“香蕉”]]

应该回来

[“一、二、三”,“苹果、橘子和香蕉”]

对于这个练习,我必须添加不同的单词连词。 是否有更简单/更干净的方法,您只允许使用列表理解

此外,我将如何使其更加健壮,例如允许输入不同长度的列表?(不过,不要为收到答案而大惊小怪)

'''

定义连词(单词列表):

'''

输入:

连词([[“一”、“苹果”]、[“两”、“橘子”]、[“三”、“香蕉”])
连词([“汤姆”、“劳雷尔”、“默克尔”]、[“杰瑞”、“哈代”、“马克龙”])
输出:

[‘一、二、三’、‘苹果、橘子和香蕉’]
[‘汤姆和杰瑞’、‘劳雷尔和哈代’、‘默克尔和马克龙’]
您可以使用和:

输出

['Tom and Jerry', 'Laurel and Hardy', 'Merkel and Macron']
['one and two and three', 'apples and oranges and bananas']
conjunctions=lambda L:list(映射(lambda*names:'and'.join(names),*L))
打印(连词([“一”、“苹果”]、[“两”、“橘子”]、[“三”、“香蕉”]))
输出

[‘一、二、三’、‘苹果、橘子和香蕉’]

您可以用四行(可能更少)来完成:

连接的输出(lst1)


您可以这样做:

twoDArray=[[“一”、“苹果”]、[“两”、“橘子”]、[“三”、“香蕉”]]
答案=[0]*len(twoDArray[0])
对于i,枚举中的数组(twoDArray):
对于j,枚举(数组)中的值:
如果(答案[j]==0):
答案[j]=数值
其他:
答案[j]=答案[j]+“和”+值
打印(答案)
试试看

我们可以将一个空的
answer
数组初始化为
twoDArray
中第一个数组的长度

answer=[0]*len(twoDArray[0])
现在我们遍历
twoDArray
array
中每个数组中的值

对于i,枚举中的数组(twoDArray):
对于j,枚举(数组)中的值:
我们使用
j
内部for循环的索引来确定我们正在设置
应答
数组中的哪个索引

如果索引
j
处的值尚未设置,我们希望设置其
值。
否则,我们将附加到索引中存在的

if(答案[j]==0):
答案[j]=数值
其他:
答案[j]=答案[j]+“和”+值
def conjunctions(lst):
    return list(' and '.join(words) for words in zip(*lst))

print(conjunctions([["Tom", "Laurel", "Merkel"],["Jerry","Hardy", "Macron"]]))
print(conjunctions([["one", "apples"],["two","oranges"],["three","bananas"]]))
['Tom and Jerry', 'Laurel and Hardy', 'Merkel and Macron']
['one and two and three', 'apples and oranges and bananas']
lst1 = [["Tom", "Laurel", "Merkel"],["Jerry","Hardy", "Macron"]]
lst2 = [["one", "apples"],["two","oranges"],["three","bananas"]]
def conjunctions(lst):
    final_list = []
    for idx,name in enumerate(lst[0]):
        final_list.append(' and '.join([i[idx] for i in lst]))
    return final_list
['Tom and Jerry', 'Laurel and Hardy', 'Merkel and Macron']