एक बात मैं अपने आप को Emacs में लापता खोजने के तुतलाना है, आश्चर्यजनक रूप से, सूची में गड़बड़ी की एक विशेष सा। मुझे पायथन की संक्षिप्त सूची टुकड़ा याद आती है।क्या पाइथन की [एन: एम] सूची स्लाइस के बराबर एक संक्षिप्त emacs lisp है?
>>> mylist = ["foo", "bar", "baz", "qux", "frobnitz"]
>>> mylist[1:4]
['bar', 'baz', 'qux']
मैं कार्यों butlast
और Emacs दस्तावेज में nthcdr
देखते हैं, जो इस तरह कोड से एक ही परिणाम देना होगा:
(setq mylist '("foo" "bar" "baz" "qux" "frobnitz"))
(butlast (nthcdr 1 mylist) 1)
;; ("bar" "baz" "qux")
वहाँ के संयोजन से एक सूची टुकड़ा हो रही का अधिक संक्षिप्त तरीका है butlast
और nthcdr
?
संबंधित: http://stackoverflow.com/questions/108169/how-do-i-take-a-slice-of-a-list-a-sublist-in-scheme - तीसरे जवाब subseq है जो सिफारिश की गई है एक टुकड़ा; कोई विचार नहीं है कि यह emacs lisp में उपलब्ध है हालांकि ... – l4mpi
अहह! यही वही है जो मैं ढूंढ रहा था, धन्यवाद। 'subseq', कई अन्य नाइस चीजों की तरह है, जो Emacs के 'clmacs.el' के माध्यम से उपलब्ध है। इसके अलावा, इसे "उपसेक" कहा जाता है, शायद यही कारण है कि मैं इसके लिए खाली गुगलिंग क्यों आया - मेरे पास शब्दावली के मुद्दे हैं जैसे कि emacs के साथ एक से अधिक बार। उत्तर देना चाहते हैं तो मैं इसे स्वीकार कर सकता हूं? –
भूल मत कि अजगर 'list's, सरणियों रहे हैं, जबकि लिस्प के लिंक किए गए सूचियों रहे हैं, इसलिए प्रदर्शन विशेषताओं बहुत अलग हैं। यदि आपको बहुत सारे अनुक्रमण और बाद में करने की आवश्यकता है, खासकर अगर सूचियां लंबी हो सकती हैं, तो आपको लिस्प में एक अलग प्रकार का उपयोग करना चाहिए। (उदाहरण के लिए, एक अजगर टुकड़ा 'MyList [x: y]' 'ओ (YX)', जबकि एक लिस्प बराबर 'हे (y है)' है: 'MyList [50000,50005] के लिए' इसका मतलब सूची 10000x हो जाएगा धीमी ...) – abarnert