>>> x=[1,2]
>>> x[1]
2
>>> x=(1,2)
>>> x[1]
2
พวกเขาทั้งสองถูกต้องหรือไม่ เป็นที่ต้องการด้วยเหตุผลบางอย่าง?
>>> x=[1,2]
>>> x[1]
2
>>> x=(1,2)
>>> x[1]
2
พวกเขาทั้งสองถูกต้องหรือไม่ เป็นที่ต้องการด้วยเหตุผลบางอย่าง?
คำตอบ:
วงเล็บเป็นรายการในขณะที่วงเล็บคืออันดับ
รายการไม่แน่นอนซึ่งหมายความว่าคุณสามารถเปลี่ยนเนื้อหาได้:
>>> x = [1,2]
>>> x.append(3)
>>> x
[1, 2, 3]
ในขณะที่สิ่งอันดับ:
>>> x = (1,2)
>>> x
(1, 2)
>>> x.append(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
ความแตกต่างที่สำคัญอื่น ๆ คือ tuple นั้นแฮชหมายความว่าคุณสามารถใช้มันเป็นกุญแจสำคัญในพจนานุกรมเหนือสิ่งอื่นใด ตัวอย่างเช่น:
>>> x = (1,2)
>>> y = [1,2]
>>> z = {}
>>> z[x] = 3
>>> z
{(1, 2): 3}
>>> z[y] = 4
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
โปรดทราบว่าคนจำนวนมากได้ชี้ให้เห็นคุณสามารถเพิ่มสิ่งอันดับด้วยกัน ตัวอย่างเช่น:
>>> x = (1,2)
>>> x += (3,)
>>> x
(1, 2, 3)
แต่ไม่ได้หมายความว่าสิ่งอันดับผันแปร ในตัวอย่างด้านบนtuple ใหม่ถูกสร้างขึ้นโดยการเพิ่มทั้งสอง tuples เป็นอาร์กิวเมนต์ tuple ดั้งเดิมไม่ได้ถูกแก้ไข หากต้องการสาธิตสิ่งนี้ให้พิจารณาสิ่งต่อไปนี้:
>>> x = (1,2)
>>> y = x
>>> x += (3,)
>>> x
(1, 2, 3)
>>> y
(1, 2)
โดยที่ถ้าคุณสร้างตัวอย่างเดียวกันนี้ด้วยรายการy
ก็จะได้รับการอัปเดตด้วย:
>>> x = [1, 2]
>>> y = x
>>> x += [3]
>>> x
[1, 2, 3]
>>> y
[1, 2, 3]
ข้อแตกต่างที่น่าสนใจอย่างหนึ่ง:
lst=[1]
print lst // prints [1]
print type(lst) // prints <type 'list'>
notATuple=(1)
print notATuple // prints 1
print type(notATuple) // prints <type 'int'>
^^ instead of tuple(expected)
เครื่องหมายจุลภาคต้องรวมอยู่ใน tuple แม้ว่าจะมีเพียงค่าเดียว เช่นแทน (1,)
(1)
พวกเขาไม่ใช่รายการพวกเขาเป็นรายการและสิ่งอันดับ คุณสามารถอ่านเกี่ยวกับสิ่งอันดับในบทช่วยสอน Python ในขณะที่คุณสามารถกลายพันธุ์รายการนี้เป็นไปไม่ได้กับสิ่งอันดับ
In [1]: x = (1, 2)
In [2]: x[0] = 3
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/user/<ipython console> in <module>()
TypeError: 'tuple' object does not support item assignment
อีกวิธีหนึ่งที่แตกต่างกันคือวงเล็บและวงเล็บคือวงเล็บเหลี่ยมสามารถอธิบายความเข้าใจของรายการเช่น [x for x in y]
ในขณะที่ไวยากรณ์สอดสอดคล้องระบุขอบเขตของเครื่องกำเนิดไฟฟ้า :(x for x in y)
คุณสามารถทำความเข้าใจกับ tuple โดยใช้: tuple(x for x in y)
ที่แรกก็คือรายการที่สองคือสิ่งอันดับ รายการไม่แน่นอน tuples ไม่ใช่
ดูที่ส่วนโครงสร้างข้อมูลของบทช่วยสอนและส่วนประเภทลำดับของเอกสาร
รายการที่คั่นด้วยเครื่องหมายจุลภาคล้อมรอบด้วย (
และ)
เป็นtuple
s, รายการที่ล้อมรอบด้วย[
และ]
เป็นlist
s
:P
(
และ)
เป็นtuple
s, สิ่งที่แนบมาด้วย[
และ]
เป็นlist
s"
(i for i in ...)
[i for i in ...]