Tôi đã tạo danh sách này; mỗi mục là một chuỗi có chứa dấu phẩy (trong một số trường hợp) và dấu hai chấm (luôn luôn):Sử dụng các hàm bậc cao của Python để thao tác các danh sách
dinner = [
'cake,peas,cheese : No',
'duck,broccoli,onions : Maybe',
'motor oil : Definitely Not',
'pizza : Damn Right',
'ice cream : Maybe',
'bologna : No',
'potatoes,bacon,carrots,water: Yes',
'rats,hats : Definitely Not',
'seltzer : Yes',
'sleeping,whining,spitting : No Way',
'marmalade : No'
]
Tôi muốn tạo ra một danh sách mới từ một bên trên như sau:
['cake : No',
'peas : No',
'cheese : No',
'duck : Maybe',
'broccoli : Maybe',
'onions : Maybe',
'motor oil : Definitely Not',
'pizza : Damn Right',
'ice cream : Maybe',
'bologna : No',
'potatoes : Yes',
'bacon : Yes',
'carrots : Yes',
'water : Yes',
'rats : Definitely Not',
'hats : Definitely Not',
'seltzer : Yes',
'sleeping : No Way',
'whining : No Way',
'spitting : No Way',
'marmalade : No']
Nhưng tôi muốn biết liệu có thể làm như thế trong một hoặc hai dòng mã hiệu quả sử dụng chủ yếu các hàm bậc cao của Python. Tôi đã cố gắng nó:
reduce(lambda x,y: x + y, (map(lambda x: x.split(':')[0].strip().split(','), dinner)))
... sản xuất này:
['cake',
'peas',
'cheese',
'duck',
'broccoli',
'onions',
'motor oil',
'pizza',
'ice cream',
'bologna',
'potatoes',
'bacon',
'carrots',
'water',
'rats',
'hats',
'seltzer',
'sleeping',
'whining',
'spitting',
'marmalade']
... nhưng tôi đang phải vật lộn với phụ thêm mảnh mỗi chuỗi sau dấu hai chấm lại vào mỗi mục.
Tại sao các bạn quan tâm về độ dài mã? Điều này sẽ ít được duy trì hơn trong dài hạn. – jpmc26
@ jpmc26 Tôi hiểu bạn đến từ đâu và đồng ý. Điều này đối với tôi là một bài tập khám phá nhiều hơn trong việc hiểu các khả năng của hofs của Python. – dstar