คำถามติดแท็ก list


6
อะไรคือข้อเสียของการกำหนดคลาสเป็นคลาสย่อยของรายการของตัวเอง?
ในโครงการล่าสุดของฉันฉันกำหนดคลาสด้วยส่วนหัวต่อไปนี้: public class Node extends ArrayList<Node> { ... } อย่างไรก็ตามหลังจากพูดคุยกับอาจารย์ประจำ CS ของฉันเขากล่าวว่าในชั้นเรียนจะ "น่ากลัวสำหรับความทรงจำ" และ "การปฏิบัติที่ไม่ดี" ฉันไม่ได้พบคนแรกที่เป็นจริงโดยเฉพาะและที่สองที่จะเป็นอัตนัย เหตุผลของฉันสำหรับการใช้งานนี้คือฉันมีความคิดสำหรับวัตถุที่จำเป็นต้องกำหนดเป็นสิ่งที่อาจมีความลึกตามอำเภอใจซึ่งพฤติกรรมของอินสแตนซ์สามารถกำหนดได้ทั้งโดยการใช้งานที่กำหนดเองหรือพฤติกรรมของวัตถุหลายอย่างเช่น . สิ่งนี้จะช่วยให้การนามธรรมของวัตถุที่มีการใช้งานทางกายภาพจะประกอบด้วยองค์ประกอบย่อยหลายโต้ตอบ ในทางกลับกันฉันเห็นว่านี่อาจเป็นการปฏิบัติที่ไม่ดี แนวคิดของการกำหนดสิ่งที่เป็นรายการของตัวเองนั้นไม่ง่ายหรือสามารถนำไปใช้งานได้จริง มีเหตุผลที่ถูกต้องหรือไม่ทำไมฉันไม่ควรใช้รหัสนี้ในการพิจารณาการใช้งานของฉัน ¹หากฉันจำเป็นต้องอธิบายเรื่องนี้เพิ่มเติมฉันยินดีที่จะ; ฉันแค่พยายามทำให้คำถามนี้สั้นกระชับ

5
การใช้. ใด ๆ () ในรายการ C # <> คืออะไร
ฉันได้คุยเรื่องนี้กับเพื่อนร่วมงานและเราไม่สามารถเข้าใจได้ว่าการใช้งานนั้นมีประโยชน์.AnyสำหรับอะไรList&lt;&gt;ใน C # คุณสามารถตรวจสอบความถูกต้องขององค์ประกอบในอาร์เรย์เช่นคำสั่งต่อไปนี้: if (MyList.Any()){ ...} //Returns true or false ซึ่งเป็นสิ่งเดียวกัน if (MyList.Count() != 0) { ... } และเป็นเรื่องธรรมดามากขึ้นอ่านได้และชัดเจนเกี่ยวกับเจตนาของifข้อความ ในท้ายที่สุดเราติดอยู่กับความคิดนี้: .Any() สามารถใช้งานได้เช่นกัน แต่ไม่ชัดเจนเกี่ยวกับเจตนาของโปรแกรมเมอร์และในกรณีนี้ไม่ควรใช้ แต่เรารู้สึกว่ามันไม่ถูกต้อง เราต้องคิดถึงบางสิ่ง พวกเราคือ
40 c#  array  list 

6
ทำไมไพ ธ อนจึงทำสำเนาองค์ประกอบเฉพาะเมื่อทำซ้ำรายการ?
ฉันเพิ่งรู้ว่าในงูใหญ่ถ้ามีคนเขียน for i in a: i += 1 องค์ประกอบของรายการเดิมaจริงจะไม่ได้ส่งผลกระทบต่อที่ทุกคนตั้งแต่ตัวแปรจะออกมาเพียงแค่เป็นสำเนาขององค์ประกอบเดิมในia ในการปรับเปลี่ยนองค์ประกอบดั้งเดิม for index, i in enumerate(a): a[index] += 1 จะต้อง ฉันรู้สึกประหลาดใจจริงๆกับพฤติกรรมนี้ ดูเหมือนว่าจะเป็นแบบที่ใช้ง่ายมากดูเหมือนจะแตกต่างจากภาษาอื่นและทำให้เกิดข้อผิดพลาดในรหัสของฉันที่ฉันต้องแก้ไขในขณะนี้ ฉันเคยอ่าน Python Tutorial มาก่อน เพียงเพื่อให้แน่ใจว่าฉันตรวจสอบหนังสืออีกครั้งในขณะนี้และมันไม่ได้พูดถึงพฤติกรรมนี้เลย เหตุผลที่อยู่เบื้องหลังการออกแบบนี้คืออะไร? เป็นที่คาดหวังหรือไม่ว่าเป็นแบบฝึกหัดมาตรฐานในหลายภาษาเพื่อที่ผู้สอนจะเชื่อว่าผู้อ่านควรได้รับมันอย่างเป็นธรรมชาติหรือไม่? ในภาษาอื่นมีพฤติกรรมแบบเดียวกันในการทำซ้ำที่ฉันควรให้ความสนใจในอนาคตหรือไม่
31 python  list  iterator 

3
ฉันควรใช้รายการหรืออาเรย์
ฉันกำลังทำงานบนฟอร์ม windows เพื่อคำนวณ UPC สำหรับหมายเลขรายการ ฉันประสบความสำเร็จในการสร้างหมายเลขที่จะจัดการหมายเลขรายการ / UPC ทีละรายการตอนนี้ฉันต้องการขยายและทำสำหรับหลายรายการหมายเลข / UPCs ฉันเริ่มและลองใช้รายการ แต่ฉันยังคงติดอยู่ ฉันสร้างคลาสผู้ช่วยเหลือ: public class Codes { private string incrementedNumber; private string checkDigit; private string wholeNumber; private string wholeCodeNumber; private string itemNumber; public Codes(string itemNumber, string incrementedNumber, string checkDigit, string wholeNumber, string wholeCodeNumber) { this.incrementedNumber = incrementedNumber; this.checkDigit = …
22 c#  array  winforms  list 

5
เหตุใดรายการข้อเสียเกี่ยวข้องกับฟังก์ชันการเขียนโปรแกรม
ฉันสังเกตเห็นว่าภาษาที่ใช้งานได้ส่วนใหญ่ใช้ลิสต์ที่เชื่อมโยงเดี่ยว ๆ (รายการ "ข้อเสีย") เป็นประเภทลิสต์พื้นฐานที่สุด ตัวอย่าง ได้แก่ Common LISP, Haskell และ F # สิ่งนี้แตกต่างจากภาษากระแสหลักโดยที่ประเภทรายการเนทีฟเป็นอาร์เรย์ ทำไมถึงเป็นอย่างนั้น? สำหรับ Common LISP (ถูกพิมพ์แบบไดนามิก) ฉันเข้าใจว่าข้อเสียนั้นเป็นเรื่องทั่วไปมากพอที่จะเป็นฐานของรายการต้นไม้และอื่น ๆ นี่อาจเป็นเหตุผลเล็กน้อย สำหรับภาษาที่พิมพ์แบบสแตติกฉันไม่สามารถหาเหตุผลที่ดีได้ฉันยังสามารถหาข้อโต้แย้งได้ ฟังก์ชั่นการใช้งานช่วยส่งเสริมการเปลี่ยนแปลงไม่ได้ดังนั้นความง่ายในการแทรกของรายการที่เชื่อมโยงจึงเป็นข้อได้เปรียบน้อยกว่า รูปแบบการใช้งานช่วยกระตุ้นการใช้งานไม่ได้ดังนั้นยังใช้ข้อมูลร่วมกัน อาเรย์จะแบ่งปัน "บางส่วน" ได้ง่ายกว่ารายการที่ลิงก์ คุณสามารถทำการจับคู่รูปแบบในอาร์เรย์ปกติได้เช่นกันและดียิ่งขึ้น (เช่นคุณสามารถพับจากขวาไปซ้ายได้อย่างง่ายดาย) ยิ่งไปกว่านั้นคุณจะได้รับการเข้าถึงแบบสุ่มฟรี และ (ข้อได้เปรียบในทางปฏิบัติ) หากพิมพ์ภาษาแบบคงที่คุณสามารถใช้เค้าโครงหน่วยความจำปกติและเพิ่มความเร็วจากแคช เหตุใดจึงชอบรายการที่เชื่อมโยง

8
ค้นหา“ hole” ในรายการตัวเลข
วิธีที่เร็วที่สุดในการค้นหาจำนวนเต็ม (เล็กที่สุด) แรกที่ไม่มีอยู่ในรายการของจำนวนเต็มไม่ได้เรียง (และนั่นคือมากกว่าค่าที่เล็กที่สุดของรายการ)? วิธีดั้งเดิมของฉันคือการเรียงลำดับพวกเขาและก้าวผ่านรายการมีวิธีที่ดีกว่า

1
เหตุใดการผนวกรายการใน Scala จึงมีความซับซ้อนของเวลา O (n)
ฉันเพิ่งอ่านว่าเวลาดำเนินการของการดำเนินการผนวกสำหรับList(+) Listเติบโตขึ้นเป็นเส้นตรงกับขนาดของ การต่อท้ายListดูเหมือนจะเป็นการดำเนินการทั่วไปที่ค่อนข้างสวย เหตุใดจึงควรใช้วิธีการนี้เพื่อเตรียมส่วนประกอบจากนั้นจึงย้อนรายการ มันไม่สามารถเป็นความล้มเหลวในการออกแบบเนื่องจากการใช้งานอาจเปลี่ยนแปลงได้ทุกเมื่อ จากมุมมองของฉันทั้งการเตรียมและการต่อท้ายควรเป็น O (1) มีเหตุผลที่ถูกต้องสำหรับสิ่งนี้หรือไม่?

1
C ++ 11 รองรับฟังก์ชั่นรายการลำดับสูงกว่า
ส่วนใหญ่ทำงานเขียนโปรแกรมภาษา (เช่น Common เสียงกระเพื่อมโครงการ / แร็กเก็ต, Clojure, Haskell, สกาล่า Ocaml, SML) สนับสนุนบางส่วนทำงานร่วมกันขั้นสูงในรายการเช่นmap, filter, takeWhile, dropWhile, foldl, foldr(ดูเช่นCommon เสียงกระเพื่อมโครงการ / แร็กเก็ต, Clojure เอกสารอ้างอิงแบบเคียงข้างกัน , เอกสารHaskell , Scala , OCamlและSML ) C ++ 11 มีวิธีการหรือฟังก์ชั่นมาตรฐานที่เทียบเท่าในรายการหรือไม่? ตัวอย่างเช่นลองพิจารณาตัวอย่าง Haskell ต่อไปนี้: let xs = [1, 2, 3, 4, 5] let ys = map (\x -&gt; …

1
ต้นกำเนิดของชื่อฟังก์ชันการประมวลผลรายการทั่วไป
ฟังก์ชันลำดับสูงกว่าสำหรับการใช้งานในรายการหรืออาร์เรย์ได้ถูกนำมาใช้ซ้ำแล้วซ้ำอีก ฟังก์ชั่นแผนที่ , พับ [ L | r ] และตัวกรองถูกพบร่วมกันในภาษาการเขียนโปรแกรมหลายภาษาเช่น Scheme, ML และ Python ที่ดูเหมือนจะไม่มีบรรพบุรุษเดียวกัน ฉันจะใช้ชื่อทั้งสามนี้เพื่อรักษาคำถาม เพื่อแสดงว่าชื่อไม่เป็นสากลต่อไปนี้เป็นตัวอย่างของชื่อฟังก์ชันการทำงานที่เทียบเท่าในภาษาอื่น C ++ มีการแปลงแทนmapและremove_ifแทนที่จะเป็นfilter (กลับความหมายของเพรดิเคต) ชัดมีmapcarแทนแผนที่ , ลบถ้าไม่แทนการกรองและลดแทนการพับ (บางทันสมัยเสียงกระเพื่อมสายพันธุ์มีแผนที่แต่ปรากฏนี้จะเป็นรูปแบบที่ได้มา .) C # ใช้เลือกแทนการแผนที่และไหนแทนกรอง ชื่อของ C # มาจาก SQL ผ่านLINQและแม้ว่าจะมีการเปลี่ยนแปลงชื่อการทำงานของพวกเขานั้นได้รับอิทธิพลจาก Haskell ซึ่งตัวมันเองได้รับอิทธิพลมาจาก ML ชื่อแผนที่ , พับและตัวกรองเป็นที่แพร่หลาย แต่ไม่เป็นสากล นี่แสดงให้เห็นว่าพวกเขายืมมาจากแหล่งที่มีอิทธิพลไปสู่ภาษาร่วมสมัยอื่น ๆ ชื่อฟังก์ชันเหล่านี้มาจากไหน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.