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

โครงสร้างทางวากยสัมพันธ์ซึ่งให้วิธีที่กระชับในการสร้างรายการในลักษณะที่คล้ายคลึงกับสัญกรณ์ชุดตัวสร้างทางคณิตศาสตร์ เนื่องจากหลายภาษาสนับสนุนความเข้าใจในรายการโปรดใช้แท็กนี้ร่วมกับแท็กของภาษาโปรแกรม

13
สร้างพจนานุกรมที่มีรายการความเข้าใจ
ฉันชอบไวยากรณ์ความเข้าใจในรายการ Python มันสามารถใช้สร้างพจนานุกรมได้หรือไม่ ตัวอย่างเช่นโดยทำซ้ำมากกว่าคู่ของคีย์และค่า: mydict = {(k,v) for (k,v) in blah blah blah} # doesn't work

10
if / else ในรายการความเข้าใจ
ฉันจะทำสิ่งต่อไปนี้ใน Python ได้อย่างไร row = [unicode(x.strip()) for x in row if x is not None else ''] เป็นหลัก: แทนที่ Nones ทั้งหมดด้วยสตริงว่างแล้ว ดำเนินฟังก์ชั่น

11
รายการความเข้าใจกับแผนที่
มีเหตุผลที่ต้องการใช้map()มากกว่าความเข้าใจในรายการหรือในทางกลับกัน? เป็นหนึ่งในนั้นโดยทั่วไปมีประสิทธิภาพมากขึ้นหรือพิจารณาโดยทั่วไปยิ่งใหญ่กว่าอีกหรือไม่?

6
สร้างรายการของรายการเดียวซ้ำ N ครั้ง
ฉันต้องการสร้างชุดรายการความยาวผันแปรทั้งหมด แต่ละรายการจะมีองค์ประกอบเดียวกันeซ้ำnครั้ง (โดยที่n= ความยาวของรายการ) ฉันจะสร้างรายการโดยไม่ต้องใช้ความเข้าใจในรายการ[e for number in xrange(n)]สำหรับแต่ละรายการได้อย่างไร


8
พจนานุกรมภาษาไพ ธ อน
เป็นไปได้ไหมที่จะสร้างความเข้าใจในพจนานุกรมใน Python (สำหรับปุ่ม)? คุณสามารถใช้สิ่งนี้: l = [] for n in range(1, 11): l.append(n) เราสามารถย่อให้สั้นลงไปสู่รายการความเข้าใจ: l = [n for n in range(1, 11)]. อย่างไรก็ตามพูดว่าฉันต้องการตั้งค่าคีย์ของพจนานุกรมเป็นค่าเดียวกัน ที่ฉันสามารถทำได้: d = {} for n in range(1, 11): d[n] = True # same value for each ฉันเคยลองแล้ว: d = {} d[i for i in range(1, 11)] …

10
ทำไมไม่มีความเข้าใจสิ่งอันดับใน Python
อย่างที่เราทุกคนรู้กันดีว่ามีความเข้าใจในรายการเช่นกัน [i for i in [1, 2, 3, 4]] และมีความเข้าใจในพจนานุกรมเช่น {i:j for i, j in {1: 'a', 2: 'b'}.items()} แต่ (i for i in (1, 2, 3)) จะจบลงในเครื่องกำเนิดไฟฟ้าไม่ใช่ความtupleเข้าใจ ทำไมถึงเป็นอย่างนั้น? ฉันเดาว่ามันเป็นtupleสิ่งที่ไม่เปลี่ยนรูป แต่ดูเหมือนจะไม่เป็นคำตอบ

6
วิธีที่มีประสิทธิภาพมากที่สุดของ Python ในการเลือกสตริงที่ยาวที่สุดในรายการ?
ฉันมีรายการความยาวผันแปรได้และกำลังพยายามหาวิธีทดสอบว่ารายการที่ประเมินอยู่ในปัจจุบันนั้นเป็นสตริงที่ยาวที่สุดที่อยู่ในรายการหรือไม่ และฉันใช้ Python 2.6.1 ตัวอย่างเช่น: mylist = ['abc','abcdef','abcd'] for each in mylist: if condition1: do_something() elif ___________________: #else if each is the longest string contained in mylist: do_something_else() แน่นอนว่ามีรายการความเข้าใจสั้น ๆ ที่เรียบง่ายและสง่างามที่ฉันมองเห็น?

10
ซ้ำสองครั้งในรายการความเข้าใจ
ใน Python คุณสามารถมีตัววนซ้ำหลายตัวในรายการความเข้าใจเช่น [(x,y) for x in a for y in b] สำหรับบางลำดับที่เหมาะสม a และ b ฉันตระหนักถึงความหมายของลูปซ้อนกันของความเข้าใจในรายการของไพ ธ อน คำถามของฉันคือ: ตัววนซ้ำหนึ่งตัวในความเข้าใจสามารถอ้างถึงตัวอื่นได้หรือไม่? กล่าวอีกนัยหนึ่ง: ฉันขอสิ่งนี้ได้ไหม: [x for x in a for a in b] ที่ค่าปัจจุบันของลูปด้านนอกเป็นตัววนซ้ำของ Inner? ตัวอย่างเช่นถ้าฉันมีรายการซ้อนอยู่: a=[[1,2],[3,4]] การแสดงออกของรายการความเข้าใจจะเป็นอย่างไรเพื่อให้ได้ผลลัพธ์นี้: [1,2,3,4] ?? (โปรดระบุเฉพาะคำตอบความเข้าใจเนื่องจากนี่คือสิ่งที่ฉันต้องการค้นหา)

12
รายการความเข้าใจในรายการซ้อนกัน?
ฉันมีรายการซ้อนกันนี้: l = [['40', '20', '10', '30'], ['20', '20', '20', '20', '20', '30', '20'], ['30', '20', '30', '50', '10', '30', '20', '20', '20'], ['100', '100'], ['100', '100', '100', '100', '100'], ['100', '100', '100', '100']] ทีนี้สิ่งที่ฉันอยากทำคือแปลงแต่ละองค์ประกอบในรายการให้ลอย ทางออกของฉันคือ: newList = [] for x in l: for y in x: newList.append(float(y)) แต่สิ่งนี้สามารถทำได้โดยใช้ความเข้าใจในรายการซ้อนกันใช่มั้ย สิ่งที่ฉันทำคือ: …

2
วิธีที่เร็วที่สุดในการแปลงตัววนซ้ำเป็นรายการ
มีiteratorวัตถุมีบางสิ่งที่เร็วกว่าดีกว่าหรือถูกต้องกว่า list comprehension เพื่อรับรายการของวัตถุที่ส่งคืนโดย iterator หรือไม่? user_list = [user for user in user_iterator]

5
รายการความเข้าใจบรรทัดเดียว: if-else ชุดรูปแบบ
มันเพิ่มเติมเกี่ยวกับไวยากรณ์ความเข้าใจรายการหลาม ฉันมีรายการความเข้าใจที่สร้างรายการเลขคี่ของช่วงที่กำหนด: [x for x in range(1, 10) if x % 2] สิ่งนี้ทำให้ตัวกรอง - ฉันมีรายการแหล่งที่มาซึ่งฉันจะลบเลขคู่ออก ( if x % 2) ฉันต้องการใช้บางอย่างเช่นถ้าเป็นอย่างอื่นที่นี่ รหัสต่อไปนี้ล้มเหลว: >>> [x for x in range(1, 10) if x % 2 else x * 100] File "<stdin>", line 1 [x for x in range(1, 10) if x % …

5
การเข้าถึงตัวแปรคลาสจากรายการความเข้าใจในการกำหนดคลาส
คุณเข้าถึงตัวแปรคลาสอื่น ๆ ได้อย่างไรจากรายการความเข้าใจภายในนิยามคลาส? การทำงานต่อไปนี้ใน Python 2 แต่ล้มเหลวใน Python 3: class Foo: x = 5 y = [x for i in range(1)] Python 3.2 ให้ข้อผิดพลาด: NameError: global name 'x' is not defined การพยายามFoo.xไม่ทำงานเช่นกัน ความคิดเห็นเกี่ยวกับวิธีการทำเช่นนี้ใน Python 3 ตัวอย่างแรงจูงใจที่ซับซ้อนกว่าเล็กน้อย: from collections import namedtuple class StateDatabase: State = namedtuple('State', ['name', 'capital']) db = [State(*args) …

7
ฟังก์ชั่น list-comprehensions และฟังก์ชั่นการทำงานเร็วกว่า“ for loops” หรือไม่?
ในแง่ของประสิทธิภาพในหลามเป็นรายการความเข้าใจหรือฟังก์ชั่นชอบmap(), filter()และreduce()เร็วกว่าสำหรับห่วง? ทำไมในทางเทคนิคแล้วมันทำงานด้วยความเร็ว Cในขณะที่ for loop ทำงานในความเร็วของ python virtual machine ? สมมติว่าในเกมที่ฉันกำลังพัฒนาฉันต้องวาดแผนที่ที่ซับซ้อนและมีขนาดใหญ่เพื่อใช้เป็นลูป คำถามนี้จะเกี่ยวข้องกันอย่างแน่นอนเช่นหาก list-comprehension เร็วกว่าจริง ๆ มันจะเป็นตัวเลือกที่ดีกว่ามากเพื่อหลีกเลี่ยงความล่าช้า (แม้จะมีความซับซ้อนในการมองเห็นของโค้ด)

14
กำลังสร้างพจนานุกรมจากไฟล์ csv หรือไม่
ฉันพยายามสร้างพจนานุกรมจากไฟล์ csv คอลัมน์แรกของไฟล์ csv มีคีย์ที่ไม่ซ้ำกันและคอลัมน์ที่สองมีค่า แต่ละแถวของไฟล์ csv แสดงถึงคีย์ที่ไม่ซ้ำกันคู่ของค่าภายในพจนานุกรม ฉันพยายามใช้csv.DictReaderและcsv.DictWriterคลาส แต่ฉันสามารถหาวิธีสร้างพจนานุกรมใหม่สำหรับแต่ละแถวเท่านั้น ฉันต้องการพจนานุกรมหนึ่งฉบับ นี่คือรหัสที่ฉันพยายามใช้: import csv with open('coors.csv', mode='r') as infile: reader = csv.reader(infile) with open('coors_new.csv', mode='w') as outfile: writer = csv.writer(outfile) for rows in reader: k = rows[0] v = rows[1] mydict = {k:v for k, v in rows} print(mydict) ValueError: …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.