[Python]リスト、タプル、辞書の違い

http://www.cnblogs.com/Michael-Kong/archive/2012/07/11/2585840.html
  1. ディクショナリは Python の組み込みデータ型の1つであり、キーと値の間の1対1の関係を定義します。
  2. 各要素はキーと値のペアであり、要素のセット全体が中括弧で囲まれています
  3. キーでその値を参照することはできますが、値でキーを取得することはできません
  4. 辞書に重複するキーがあってはなりません。既存のキーに値を割り当てると、元の値が上書きされます。 2 新しいキーと値のペアはいつでも追加できます。この構文は、既存の値を変更するのと同じです。
  5. 辞書を使用するときは、次のことを知っておく必要があります。辞書のキーでは大文字と小文字が区別されます
  6. 辞書は文字列を保存するためだけのものではありません。Dictionaryの値は、文字列、整数、オブジェクト、さらには他の辞書など、任意のデータ型にすることができます。単一のディクショナリでは、ディクショナリの値がすべて同じデータ型である必要はなく、必要に応じて混合および照合できます。 2 辞書のキーははるかに厳密ですが、文字列、整数、その​​他のいくつかのタイプにすることができます(これについては後で説明します)。辞書内の主要なデータ型を組み合わせて使用​​することもできます
  7. delを 使用すると、キーを使用して辞書から個々の要素を削除できます。
  8. clear は、辞書からすべての要素をクリアします。中括弧の空のセットは、要素のない辞書を表すことに注意してください。

 

  1. リストは、角括弧で囲まれた要素の順序付けられたコレクションです。
  2. リストは、添え字0で始まる配列として使用できます。空でないリストの最初の要素は常に li [0]です。
  3. 負のインデックスは、リストの最後からアクセス要素までカウントされます。空でないリストの最後の要素は常に li [-1]です。 2負のインデックスで混乱を感じる場合は、li [-n] == li [len(li)-n]のように理解できます したがって、このリストでは、  li [-3] == li [5-3] == li [2]です。
  4. スライスと呼ばれる2つのインデックスを指定することにより、リストのサブセットを取得できます戻り値は新しいリストであり、最初のスライスインデックス(ここでは li [1])から2番目のスライスインデックス(ここではli [3])要素までのリスト内のすべてが含まれます
  5. 両方のフラグメントインデックスを省略すると、リストのすべての要素が含まれます。ただし、  liという名前の元のリストとは異なり、これはli と同じ要素をすべて持っている新しいリストです li [:] は、リストの完全なコピーを作成するための省略形です。
  6.  append は、リストの最後に1つの要素を追加します
  7. insertは 、単一の要素をリストに挿入します。数値パラメータは、挿入ポイントのインデックスです。リスト内の要素は一意である必要はないことに注意してください 同じ値の「new」を持つ2つの独立した要素が あります
  8.  extendsは 、リストを接続するために使用されます。拡張を呼び出すために複数のパラメーターを使用しないように注意してください。しかし、呼び出す ために1つのリストパラメーターを使用してください。
  9. リストの2つの方法、  extend と appendは 似ていますが、実際には完全に異なります。 extend は、常にリストである1つのパラメーターを受け入れ、このリストの各要素を元のリストに追加します
  10. 一方、  append は、任意のデータ型のパラメーターを受け入れ、リストの最後に追加するだけです。ここで、append メソッドは、3つの要素を含むlistパラメーターを使用して呼び出されます 
  11. index は、リスト内で最初に出現する値を検索し、インデックス値を返します。
  12. 値がリストにあるかどうかをテストするには、を使用 ます。値が存在する場合はTrueを返し、存在し ない場合はFalseを返します  。
  13. remove は、リストから値の最初の出現を削除します。
  14. ポップ は面白いものです。リストの最後の要素を削除してから、削除された要素の値を返すという2つのことを行います。これは 、リスト自体を変更せずに値を返すli [-1]異なることに注意してください また、リストを変更するが値を返さないli.remove(valueとも異なり ます。
  15. リストは+ 演算子で接続することもでき ます。 リスト = リスト +  otherlist 対応 リスト.extend(otherlistただし、  +演算子は新しい(接続後の)リストを値として返しますが、  extend は既存のリストのみを変更します。つまり、大きなリストの場合、  実行速度を拡張する方が高速です。
  16.  Python は+ = 演算子をサポートしてい ます。 li + = ['two']はli.extend(['two']) 同等 です。 + = 演算子は、リスト、文字列、整数に使用できます。また、ユーザー定義クラスで使用するためにオーバーロードすることもできます。
  17. * 运算符可以作为一个重复器作用于 list。 li = [1, 2] * 3 等同于 li = [1, 2] + [1, 2] + [1, 2], 即将三个 list 连接成一个。

  1.     Tuple是不可变的list.一是创建了一个tuple就不能以任何方式改变它.
  2.     定义tuple与定义list的方式相同,除了整个元素集是用小括号包围的而不是方括号.
  3.   Tuple的元素与list一样按定义的次序进行排序.Tuples的索引与list一样从0开始,所以一个非空的tuple的第一个元素总是t[0].
  4.     负数索引与 list 一样从 tuple 的尾部开始计数。
  5.     与 list 一样分片 (slice) 也可以使用。注意当分割一个 list 时, 会得到一个新的 list ;当分割一个 tuple 时, 会得到一个新的 tuple。
  6.     Tuple 没有方法:没有 append 或 extend 方法、没有 remove 或 pop 方法、没有 index 方法、可以使用 in 来查看一个元素是否存在于 tuple 中。

   其中list()函数与tuple()函数接受可抚今迭代的对象(比如一个序列)作为参数,并通过浅拷贝数据来创建一个新的列表与元组.虽然字符串也是序列类型,但一般它们不用于list()与tuple().更多的情况下,它们用于在两种类型之间进行轩换,比如你需要把一个已有的元组转换成列表类型(然后你可以修改它的元素),反之也是.

     alist=['123','456'];

     atuple=tuple(alist);

     print atuple 

     >>>('123', '456')

    alist==atuple

    >>> False

    alist2=list(atuple)

   alist2==alist

   >>>True

   alist is alist2

   >>>False

   再说id()确认一下, [id(x)  for x in alist,atuple,alist2]

    >>>[10903800,12003900,11730280]

    所以无论是list()还是tuple()都不可能做到完全转换,也就是说传递一个元组到list不会变成真正的列表,同时传递一个列表到tuple()也不会变成一个真正的元组.虽然前后两个对象有相同的数据集合,但是变量指向的不是同一个对象.需要注意的是:它们的所有值相同,一个列表也不可能"等于"一个元组的.


字典(dict)
dict 用 {} 包围 
dict.keys(),dict.values(),dict.items() 
hash(obj)返回obj的哈希值,如果返回表示可以作为dict的key 
del 或 dict.pop可以删除一个item,clear清除所有的内容 
sorted(dict)可以吧dict排序 
dict.get()可以查找没存在的key,dict.[]不可以 
dict.setdefault() 检查字典中是否含有某键。 如果字典中这个键存在,你可以取到它的值。 如果所找的键在字典中不存在,你可以给这个键赋默认值并返回此值。 
{}.fromkeys()创建一个dict,例如: {}.fromkeys(('love', 'honor'), True) =>{'love': True, 'honor': True} 
不允许一个键对应多个值 
键值必须是哈希的,用hash()测试 
一个对象,如果实现_hash()_方法可以作为键值使用



集合(set)
集合是一个数学概念,用set()创建 
set.add(),set.update.set.remove,添加更新删除,-= 可以做set减法 
set.discard 和 set.remove不同在于如果删除的元素不在集合内,discard不报错,remove 报错 
< <= 表示 子集,> >=表示超集 
| 表示联合 & 表示交集 - 表示差集 ^ 差分集里啊


列表(list)
列表是序列对象,可包含任意的Python数据信息,如字符串、数字、列表、元组等。列表的数据是可变的,我们可通过对象方法对列表中的数据进行增加、修改、删除等操作。可以通过list(seq)函数把一个序列类型转换成一个列表。
append(x) 在列表尾部追加单个对象x。使用多个参数会引起异常。 
count(x) 返回对象x在列表中出现的次数。 
extend(L) 将列表L中的表项添加到列表中。返回None。 
Index(x) 返回列表中匹配对象x的第一个列表项的索引。无匹配元素时产生异常。 
insert(i,x) 在索引为i的元素前插入对象x。如list.insert(0,x)在第一项前插入对象。返回None。 
pop(x) 删除列表中索引为x的表项,并返回该表项的值。若未指定索引,pop返回列表最后一项。 
remove(x) 删除列表中匹配对象x的第一个元素。匹配元素时产生异常。返回None。 
reverse() 颠倒列表元素的顺序。 
sort() 对列表排序,返回none。bisect模块可用于排序列表项的添加和删除。 


タプル(tuple)
tuple =(1、)、これは単一要素のタプル表現であり、追加のコンマが必要です。
tuple = 1、2、3、4、これもタプルにすることができます。混乱を引き起こさずに括弧を使用しない場合、Pythonでは括弧なしのタプルを使用できます。
リストと同様に、タプルはインデックス付け、スライス、結合、および繰り返しが可能です。len()を使用して、タプルの長さを見つけることもできます。  
タプルのインデックスは、tuple(i)ではなくtuple [i]の形式です。 
リストと同様に、tuple(seq)を使用して、他のシーケンスタイプをタプルに変換します。

おすすめ

転載: blog.csdn.net/michellechouu/article/details/50705235