:
names = (mail.folder for mail in @data \
when mail.service_name is service.name).unique()
तुम भी for ... when
और अभिव्यक्ति को उलटने के कर सकते हैं
यह ज्यादा लंबा हो रही बिना इस बात का सबसे पठनीय संस्करण है:
names =
(for mail in @data when mail.service_name is service.name
mail.folder).unique()
आप एक से अधिक लाइनों पर सूची comprehensions विभाजित नहीं कर सकते, लेकिन पाश के लिए एक सामान्य भी मान सकते हैं, तो उनमें से एक को हल करती है का उपयोग करते हुए मुसीबत। आप एक अतिरिक्त पंक्ति देने के लिए तैयार हैं, तो वहाँ पाश के आसपास अजीब कोष्ठकों की आवश्यकता नहीं है:
names =
for mail in @data when mail.service_name is service.name
mail.folder
names = names.unique()
अंत में, for
पंक्ति का खरोज आप पर निर्भर है; मुझे अपना पहला संस्करण अधिक पठनीय लगता है लेकिन यह भी मान्य है:
names =
(for mail in @data when mail.service_name is service.name
mail.folder).unique()
स्रोत
2012-07-02 01:02:04
मुझे आपके पहले समाधान पर लाइन 1: अनपेक्षित 'इंडेंट' * पर PARSE त्रुटि मिलती है। आपका दूसरा समाधान ठीक काम करता प्रतीत होता है। – jackwanders
@ जैकवांडर्स हाँ, आप सही हैं, मुझे नहीं पता कि मुझे यह कैसे याद आया: एस। मैंने तय किया कि अब एक लाइन निरंतर '\ 'के साथ। क्या यह इस तरह से काम करता है? (लिंक शो coffeescript.org में एक अद्यतन एक्समैपल को इंगित करता है) – epidemian
मुझे \ समाधान: सूची समझ + अधिक पठनीय पसंद है – Alexander