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