Lấy cảm hứng từ một số câu trả lời ở trên hoạt động với các gói python cơ sở tôi đã so sánh hiệu suất của một số (sử dụng Python 3.7.3):
Cách 1: ast
import ast
list(map(str.strip, ast.literal_eval(u'[ "A","B","C" , " D"]')))
# ['A', 'B', 'C', 'D']
import timeit
timeit.timeit(stmt="list(map(str.strip, ast.literal_eval(u'[ \"A\",\"B\",\"C\" , \" D\"]')))", setup='import ast', number=100000)
# 1.292875313000195
Cách 2: json
import json
list(map(str.strip, json.loads(u'[ "A","B","C" , " D"]')))
# ['A', 'B', 'C', 'D']
import timeit
timeit.timeit(stmt="list(map(str.strip, json.loads(u'[ \"A\",\"B\",\"C\" , \" D\"]')))", setup='import json', number=100000)
# 0.27833264000014424
Phương pháp 3: không nhập
list(map(str.strip, u'[ "A","B","C" , " D"]'.strip('][').replace('"', '').split(',')))
# ['A', 'B', 'C', 'D']
import timeit
timeit.timeit(stmt="list(map(str.strip, u'[ \"A\",\"B\",\"C\" , \" D\"]'.strip('][').replace('\"', '').split(',')))", number=100000)
# 0.12935059100027502
Tôi đã thất vọng khi thấy những gì tôi coi là phương pháp có khả năng đọc kém nhất là phương pháp có hiệu suất tốt nhất ... có những sự đánh đổi để xem xét khi đi với tùy chọn dễ đọc nhất ... đối với loại khối lượng công việc tôi thường sử dụng python giá trị dễ đọc hơn một tùy chọn hiệu suất cao hơn một chút, nhưng như thường lệ, nó phụ thuộc.