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

Python เป็นภาษาการเขียนโปรแกรมแบบหลายกระบวนทัศน์แบบไดนามิกพิมพ์อเนกประสงค์ มันถูกออกแบบมาให้เรียนรู้เข้าใจและใช้งานได้อย่างรวดเร็วและบังคับใช้ไวยากรณ์ที่สะอาดและสม่ำเสมอ โปรดทราบว่า Python 2 สนับสนุนอย่างเป็นทางการตั้งแต่วันที่ 01-01-2020 สำหรับคำถาม Python เฉพาะรุ่นให้เพิ่มแท็ก [python-2.7] หรือ [python-3.x] เมื่อใช้ตัวแปรหรือไลบรารี Python (เช่น Jython, PyPy, Pandas, Numpy) โปรดรวมไว้ในแท็ก

4
ความแตกต่างของ ContentType และ MimeType คืออะไร
เท่าที่ฉันรู้พวกเขาเท่าเทียมกันแน่นอน อย่างไรก็ตามในการเรียกดูเอกสาร django ฉันพบโค้ดนี้: HttpResponse.__init__(content='', mimetype=None, status=200, content_type='text/html') ซึ่งทำให้ฉันประหลาดใจที่ทั้งสองเข้าใกล้กัน เอกสารอย่างเป็นทางการสามารถแก้ไขปัญหาได้ในลักษณะที่เป็นไปได้: content_type เป็นนามแฝงของ mimetype ในอดีตพารามิเตอร์นี้เรียกว่า mimetype เท่านั้น แต่เนื่องจากเป็นค่าที่รวมอยู่ในส่วนหัว HTTP Content-Type จึงสามารถรวมการเข้ารหัสชุดอักขระซึ่งทำให้เป็นมากกว่าข้อกำหนดเฉพาะประเภท MIME หากระบุ mimetype (ไม่ใช่ None) ค่านั้นจะถูกใช้ มิฉะนั้นจะใช้ content_type หากไม่ได้รับการตั้งค่า DEFAULT_CONTENT_TYPE จะถูกใช้ อย่างไรก็ตามฉันไม่พบว่ามันชัดเจนเพียงพอ ทำไมเราใช้การตั้งชื่อ 2 แบบที่แตกต่างกันสำหรับสิ่งที่ (เกือบเหมือนกัน)? "Content-Type" เป็นเพียงชื่อที่ใช้ในคำขอของเบราว์เซอร์และมีการใช้ภายนอกเพียงเล็กน้อยหรือไม่ อะไรคือความแตกต่างที่สำคัญระหว่างแต่ละอันและเมื่อใดที่เหมาะสมที่จะเรียกสิ่งmimetypeที่ตรงข้ามกับcontent-type? ฉันเป็นคนฉลาดและไวยากรณ์นาซีหรือไม่?

11
จัดอันดับรายการในอาร์เรย์โดยใช้ Python / NumPy โดยไม่ต้องเรียงลำดับอาร์เรย์สองครั้ง
ฉันมีอาร์เรย์ของตัวเลขและฉันต้องการสร้างอาร์เรย์อื่นที่แสดงถึงอันดับของแต่ละรายการในอาร์เรย์แรก ฉันใช้ Python และ NumPy ตัวอย่างเช่น: array = [4,2,7,1] ranks = [2,1,3,0] นี่เป็นวิธีที่ดีที่สุดที่ฉันคิดขึ้น: array = numpy.array([4,2,7,1]) temp = array.argsort() ranks = numpy.arange(len(array))[temp.argsort()] มีวิธีใดที่ดีกว่า / เร็วกว่าที่หลีกเลี่ยงการเรียงอาร์เรย์สองครั้ง
103 python  sorting  numpy 

4
Python str เทียบกับประเภท Unicode
เมื่อทำงานกับ Python 2.7 ฉันสงสัยว่ามีประโยชน์อะไรบ้างในการใช้ประเภทunicodeแทนที่จะstrเป็นเพราะทั้งคู่ดูเหมือนจะสามารถถือสตริง Unicode ได้ มีเหตุผลพิเศษนอกเหนือจากความสามารถในการตั้งรหัส Unicode ในunicodeสตริงโดยใช้อักขระหลีก\หรือไม่: การใช้งานโมดูลด้วย: # -*- coding: utf-8 -*- a = 'á' ua = u'á' print a, ua ผลลัพธ์ใน: á, á แก้ไข: การทดสอบเพิ่มเติมโดยใช้ Python shell: >>> a = 'á' >>> a '\xc3\xa1' >>> ua = u'á' >>> ua u'\xe1' >>> ua.encode('utf8') '\xc3\xa1' >>> ua.encode('latin1') …
103 python  string  unicode 



2
Python เทียบเท่ากับการระเบิดของ PHP หรือไม่
มีการเทียบเท่ากับการระเบิดของ PHP ใน Python หรือไม่? ฉันได้อ่านและแยกชุดของคำที่ใช้ตัวคั่นและตอนนี้ฉันต้องการจัดเรียงคำเหล่านี้ในลำดับแบบสุ่มและพิมพ์คำโดยเว้นวรรค ระเบิด - เข้าร่วมองค์ประกอบอาร์เรย์ด้วยสตริง http://php.net/manual/en/function.implode.php
103 php  python  implode 

5
__lt__ แทน __cmp__
Python 2.x มีสองวิธีในการโอเวอร์โหลดตัวดำเนินการเปรียบเทียบ__cmp__หรือ "ตัวดำเนินการเปรียบเทียบที่สมบูรณ์" เช่น__lt__. การเปรียบเทียบที่มากเกินไปนั้นเป็นที่ต้องการ แต่เหตุใดจึงเป็นเช่นนั้น ตัวดำเนินการเปรียบเทียบแบบ Rich นั้นง่ายกว่าในการใช้งานแต่ละตัว แต่คุณต้องใช้ตัวดำเนินการหลายตัวด้วยตรรกะที่เหมือนกัน อย่างไรก็ตามหากคุณสามารถใช้การcmpสั่งซื้อในตัวและทูเพิล__cmp__ได้ก็จะค่อนข้างง่ายและตอบสนองการเปรียบเทียบทั้งหมด: class A(object): def __init__(self, name, age, other): self.name = name self.age = age self.other = other def __cmp__(self, other): assert isinstance(other, A) # assumption for this example return cmp((self.name, self.age, self.other), (other.name, other.age, other.other)) ความเรียบง่ายนี้ดูเหมือนจะตอบสนองความต้องการของฉันได้ดีกว่าการใช้การเปรียบเทียบที่สมบูรณ์ทั้ง 6 (!) มากเกินไป …

13
id () ฟังก์ชั่นใช้สำหรับอะไร?
ฉันอ่านเอกสาร Python 2และสังเกตเห็นid()ฟังก์ชัน: ส่งคืน "เอกลักษณ์" ของวัตถุ นี่คือจำนวนเต็ม (หรือจำนวนเต็มยาว) ซึ่งรับประกันว่าจะไม่ซ้ำกันและคงที่สำหรับวัตถุนี้ตลอดอายุการใช้งาน วัตถุสองชิ้นที่มีอายุขัยไม่ทับซ้อนกันอาจมีค่า id () เหมือนกัน รายละเอียดการใช้งาน CPython: นี่คือที่อยู่ของวัตถุในหน่วยความจำ ดังนั้นฉันจึงทดลองโดยใช้id()กับรายการ: >>> list = [1,2,3] >>> id(list[0]) 31186196 >>> id(list[1]) 31907092 // increased by 896 >>> id(list[2]) 31907080 // decreased by 12 จำนวนเต็มที่ส่งกลับจากฟังก์ชันคืออะไร? ตรงกันกับที่อยู่หน่วยความจำใน C หรือไม่? ถ้าเป็นเช่นนั้นเหตุใดจำนวนเต็มจึงไม่ตรงกับขนาดของชนิดข้อมูล เมื่อถูกid()นำมาใช้ในการปฏิบัติ?
103 python 

14
รูปแบบลอยด้วยโมดูล json มาตรฐาน
ฉันใช้โมดูล jsonมาตรฐานใน python 2.6 เพื่อจัดลำดับรายการลอย อย่างไรก็ตามฉันได้รับผลลัพธ์เช่นนี้: >>> import json >>> json.dumps([23.67, 23.97, 23.87]) '[23.670000000000002, 23.969999999999999, 23.870000000000001]' ฉันต้องการให้โฟลถูกสร้างด้วยทศนิยมสองหลักเท่านั้น ผลลัพธ์ควรมีลักษณะดังนี้: >>> json.dumps([23.67, 23.97, 23.87]) '[23.67, 23.97, 23.87]' ฉันได้ลองกำหนดคลาสตัวเข้ารหัส JSON ของตัวเองแล้ว: class MyEncoder(json.JSONEncoder): def encode(self, obj): if isinstance(obj, float): return format(obj, '.2f') return json.JSONEncoder.encode(self, obj) สิ่งนี้ใช้ได้กับวัตถุลอยตัว แต่เพียงผู้เดียว: >>> json.dumps(23.67, cls=MyEncoder) '23.67' แต่ล้มเหลวสำหรับวัตถุที่ซ้อนกัน: >>> …

15
แผนที่สองทาง / ย้อนกลับ [ซ้ำ]
คำถามนี้มีคำตอบอยู่แล้วที่นี่ : วิธีใช้ตารางแฮชสองทิศทางที่มีประสิทธิภาพ (7 คำตอบ) ปิดให้บริการใน3 เดือนที่ผ่านมา ฉันกำลังทำสวิตช์บอร์ดนี้ใน python ซึ่งฉันต้องติดตามว่าใครกำลังคุยกับใครดังนั้นถ้า Alice -> Bob แสดงว่า Bob -> Alice ใช่ฉันสามารถเติมแผนที่แฮชได้สองแผนที่ แต่ฉันสงสัยว่ามีใครมีความคิดที่จะทำกับแผนที่นี้หรือไม่ หรือแนะนำโครงสร้างข้อมูลอื่น ไม่มีการสนทนาหลายรายการ สมมติว่านี่เป็นศูนย์บริการลูกค้าดังนั้นเมื่ออลิซโทรเข้าไปที่แผงสวิตช์เธอจะคุยกับบ็อบเท่านั้น คำตอบของเขายังไปที่เธอเท่านั้น
103 python 

12
มีวิธีง่ายๆในการดองฟังก์ชัน python (หรือทำให้รหัสเป็นลำดับ) หรือไม่?
ฉันกำลังพยายามถ่ายโอนฟังก์ชันผ่านการเชื่อมต่อเครือข่าย (โดยใช้ asyncore) มีวิธีง่ายๆในการทำให้เป็นอนุกรมของฟังก์ชัน python (อย่างน้อยที่สุดในกรณีนี้จะไม่มีผลข้างเคียง) สำหรับการถ่ายโอนเช่นนี้หรือไม่? ฉันอยากจะมีฟังก์ชั่นที่คล้ายกับสิ่งเหล่านี้: def transmit(func): obj = pickle.dumps(func) [send obj across the network] def receive(): [receive obj from the network] func = pickle.loads(s) func()
103 python  function  pickle 

2
ตรวจสอบอย่างมีประสิทธิภาพว่าวัตถุที่กำหนดเองคือ NaN ใน Python / numpy / pandas หรือไม่?
อาร์เรย์จำนวนนับของฉันใช้np.nanเพื่อกำหนดค่าที่ขาดหายไป เมื่อฉันทำซ้ำชุดข้อมูลฉันจำเป็นต้องตรวจจับค่าที่ขาดหายไปและจัดการกับค่าเหล่านั้นด้วยวิธีพิเศษ อย่างไร้เดียงสาผมใช้numpy.isnan(val)ซึ่งทำงานได้ดียกเว้นในกรณีที่ไม่ได้อยู่ในหมู่ย่อยของประเภทที่สนับสนุนโดยval numpy.isnan()ตัวอย่างเช่นข้อมูลที่ขาดหายไปอาจเกิดขึ้นในช่องสตริงซึ่งในกรณีนี้ฉันจะได้รับ: >>> np.isnan('some_string') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: Not implemented for this type นอกเหนือจากการเขียนกระดาษห่อหุ้มราคาแพงที่จับข้อยกเว้นและส่งคืนFalseแล้วมีวิธีจัดการสิ่งนี้อย่างหรูหราและมีประสิทธิภาพหรือไม่?
103 python  numpy  pandas 

3
อะไรคือความแตกต่างระหว่าง 'log' และ 'symlog'?
ในmatplotlibฉันสามารถตั้งค่าการปรับขนาดแกนโดยใช้pyplot.xscale()หรือAxes.set_xscale(). ฟังก์ชันทั้งสองยอมรับสเกลที่แตกต่างกันสามแบบ: 'linear'| 'log'| 'symlog'. อะไรคือความแตกต่างระหว่าง'log'และ'symlog'? ในการทดสอบง่ายๆที่ฉันทำทั้งสองดูเหมือนกันทุกประการ ฉันรู้ว่าเอกสารระบุว่าพวกเขายอมรับพารามิเตอร์ที่แตกต่างกัน แต่ฉันยังไม่เข้าใจความแตกต่างระหว่างพารามิเตอร์เหล่านี้ ใครช่วยอธิบายหน่อยได้ไหม คำตอบจะดีที่สุดหากมีโค้ดตัวอย่างและกราฟิก! (ด้วย: ชื่อ 'symlog' มาจากไหน?)


3
ความแตกต่างระหว่าง numpy.random และ random.random ใน Python
ฉันมีสคริปต์ขนาดใหญ่ใน Python ผมได้แรงบันดาลใจตัวเองในรหัสของคนอื่น ๆ ดังนั้นผมจึงจบลงด้วยการใช้numpy.randomโมดูลสำหรับบางสิ่งบางอย่าง (เช่นสำหรับการสร้างอาร์เรย์ของตัวเลขสุ่มนำมาจากการกระจายทวินามเป็นพิเศษ) และในสถานที่อื่น ๆ random.randomที่ฉันใช้โมดูล ใครช่วยบอกความแตกต่างที่สำคัญระหว่างทั้งสองได้ไหม เมื่อดูที่หน้าเว็บ doc สำหรับทั้งสองดูเหมือนว่าฉันnumpy.randomมีวิธีการมากกว่านี้ แต่ฉันไม่ชัดเจนว่าการสร้างตัวเลขสุ่มนั้นแตกต่างกันอย่างไร เหตุผลที่ฉันถามคือเพราะฉันต้องการเริ่มต้นโปรแกรมหลักของฉันเพื่อวัตถุประสงค์ในการดีบัก แต่มันไม่ได้ผลเว้นแต่ฉันจะใช้ตัวสร้างตัวเลขสุ่มเดียวกันในทุกโมดูลที่ฉันกำลังนำเข้ามันถูกต้องหรือไม่? นอกจากนี้ฉันอ่านที่นี่ในโพสต์อื่นการอภิปรายเกี่ยวกับการไม่ใช้numpy.random.seed()งาน แต่ฉันไม่เข้าใจจริงๆว่าทำไมถึงเป็นความคิดที่ไม่ดี ฉันจะขอบคุณมากถ้ามีคนอธิบายว่าทำไมถึงเป็นเช่นนั้น

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