ホームページ  >  記事  >  バックエンド開発  >  Python のリスト、タプル、文字列とはどのようなシーケンスですか?

Python のリスト、タプル、文字列とはどのようなシーケンスですか?

青灯夜游
青灯夜游オリジナル
2020-08-29 16:20:4923207ブラウズ

リスト、タプル、および文字列は Python の順序付けされたシーケンスであり、リストは変更可能なオブジェクトであり、タプルと文字列は不変のオブジェクトです。シーケンス内の各要素には、その位置またはインデックスである番号が割り当てられます。最初のインデックスは 0、2 番目のインデックスは 1 などとなります。

Python のリスト、タプル、文字列とはどのようなシーケンスですか?

# シーケンスは、Python の最も基本的なデータ構造です。シーケンス内の各要素には番号、つまり位置、つまりインデックスが割り当てられます。最初のインデックスは 0、2 番目のインデックスは 1 などとなります。

シーケンスに対して実行できる操作には、インデックス付け、スライス、加算、乗算、メンバーのチェックなどがあります。さらに、Python には、シーケンスの長さを決定し、最大要素と最小要素を決定するためのメソッドが組み込まれています。

リスト、タプル、文字列は Python の順序付けられたシーケンスです。リストは変更可能なオブジェクトですが、タプルと文字列は不変オブジェクトです。

List (リスト)

リストは、0 個以上のオブジェクト参照を含む順序付けされたシーケンスであり、文字列やタプルと同じシャーディングとステップをサポートします。文字列やタプルとは異なり、リストは変更可能であるため、リスト内の項目を削除または置換したり、リスト内のスライスを挿入、置換、または削除したりできます。

リスト データ型は、関数 list() として呼び出すことができます。パラメータなしで呼び出すと空のリストが返されます。リスト パラメータを使用すると、パラメータの浅いコピーが返されます。その他のパラメータの場合は、 、次に、指定されたオブジェクトをリストに変換しようとします。関数値はパラメータを受け入れます。 list() 関数を使用せずにリストを作成することもできます。空のリストは空の角括弧を使用して作成できます。1 つ以上の項目を含むリストは、コンマで区切られたデータ項目のシーケンス ([] で囲まれた) を使用して作成できます。

リストによって提供されるメソッド:

Python のリスト、タプル、文字列とはどのようなシーケンスですか?

#任意の反復可能なデータ型 (リスト、タプルなど) は、現時点ではシーケンス分割演算子を使用して分割できます。 :* 。演算子の左側に 2 つ以上の変数を割り当てるために使用すると、その 1 つが * で導入され、データ項目がその変数に割り当てられ、残りのすべてのデータ項目がアスタリスク付きの変数に割り当てられます。以下にいくつかの例を示します。 :

Python のリスト、タプル、文字列とはどのようなシーケンスですか?

#シーケンス分割演算子がこのように使用される場合、式 *rest および類似の式はアスタリスク付き式と呼ばれます。

Python には、アスタリスク付きパラメータという関連する概念もあります。

Python のリスト、タプル、文字列とはどのようなシーケンスですか?

科学研究では、リスト内のデータ項目に対して反復処理が実行されます。使用される構文形式は、L: の項目です。リスト内のデータ項目を変更する必要がある場合、通常の方法は次のとおりです:

for i in range(len(L)):
L[i] = process(L[i])

リストはシャーディングをサポートしているため、場合によっては、シャーディングまたは何らかのリスト メソッドを使用して同じ機能を実現できます。例: リスト woods=['Cedar','Yew','Fir'] が指定された場合、次の 2 つの方法でリストを拡張できます:

woods+=['Kauri','Larch']    | woods.extend(['Kauri','Larch'])

上記 2 つの方法で得られる結果は両方とも['スギ'、'イチイ'、'モミ'、'カウリ'、'カラマツ'] をリストします。

list.append() メソッドを使用すると、単一のデータ項目をリストの末尾に追加できます。データ項目は、list.insert() メソッドを使用して (または長さ 0 のスライスに割り当てて)、リストの任意のインデックス位置に挿入できます。たとえば、リスト woods=['Cedar','Yew','Fir','Spruce'] の場合、新しいデータ項目をインデックス位置 2 に (つまり、リストの 3 番目の項目として) 挿入できます。次の 2 つのメソッドを実装できます。

woods[2:2] = ['Pine'] |  woods.insert(2,'Pine')

上記 2 つのメソッドによって得られる結果は、リスト ['Cedar','Yew','Pine','Fir','Spruce'] です。

特定のインデックス位置にあるオブジェクトに値を割り当てることにより、リスト内の 1 つのデータ項目を置き換えることができます (例: woods[2]='Redwood')。イテラブルをシャードに割り当てることで、シャード全体を置き換えることができます (例: woods[1:3]=['Spruce','Sagi','Rimu'])。シャードのイテラブルは同じ長さである必要はありません。これらすべてのケースで、シャードのデータ項目が削除され、反復可能データ項目が挿入されます。イテラブルに含まれる項目が置換対象のフラグメントよりも少ない場合、この操作によりカテゴリが短くなり、そうでない場合はリストが短くなります。次の例:

Python のリスト、タプル、文字列とはどのようなシーケンスですか?

複雑なリストの場合、for...in ループを使用してリストを作成できます。たとえば、うるう年のリストを生成する必要があると仮定します。指定された時間範囲内で、次のステートメントを使用できます:

 leaps = []
 for year in range(1900,1940):
  if (year%4 == 0 and year %100 !=0) or (year % 400 ==0):
    leaps.append(year)

2 つの式:

expression for item in iterable
    expression for item in  iterable if condition

Tuple

元组是个有序的序列,其中包含0个或多个对象引用。元组支持与字符串一样的分片与步距的语法,这使得从元组中提取数据项比较容易。元组也是固定的,不能替换或删除其中包含的任意数据项。如果需要修改有序序列,我们应该使用类别而非元组。如果要对元组进行修改,可以使用list()转换函数将其转换为列表,之后在产生的列表之上进行适当修改。

tuple数据类型可以作为一个函数进行调用,tuple()---不指定参数时将返回一个空元组,使用tuple作为参数时将返回该参数的浅拷贝,对其他任意参数,将尝试把给定的对象转换为tuple类型。该函数最多只能接受一个参数。元组也可以使用tuple()函数创建,空元组是使用空圆括号()创建的,包含一个或多个项的元组则可以使用逗号分隔进行创建。

元组只提供了两种方法:t.count(x),返回对象x在元组中出现的次数;t.index(x),返回对象在元组t中出现的最左边位置。

元组可以使用操作符+(连接)、*(赋值)与 [](分片),要可以使用in 与not in 来测试成员关系。

下面给出几个分片实例:

Python のリスト、タプル、文字列とはどのようなシーケンスですか?

上面这些处理过程对字符串、列表以及人员其他序列类型都是一样的

Python のリスト、タプル、文字列とはどのようなシーケンスですか?

要构成一个亿元组,逗号是必须的,这里red字符串地方我们必须同时使用逗号与圆括号。

      1.1 命名的元组

       命名的元组与普通元组一样,有相同的表现特征,其添加的功能就是可以根据名称引用元组中的项,就像根据索引位置一样,这一功能使我们可以创建数据项的聚集。

       collections 模块提供了 namedtuple()函数,该函数用于创建自定义的元组数据类型,例如:

Python のリスト、タプル、文字列とはどのようなシーケンスですか?

  collections.namedtuple()的第一个参数是想要创建的自定义元组数据类型的名称,第二个参数是一个字符串,其中包含使用空格分割的名称,每个名称代表该元组数据类型的一项。该函数返回一个自定义的类(数据类型),用于创建命名的元组。因此,这一情况下,我们将sale与任何其他python类一样看待,并创建类型为sale的对象,如:

Python のリスト、タプル、文字列とはどのようなシーケンスですか?

这里我们厂家了包含两个sale项的列表,也就是包含两个自定义元组。我们也可以使用索引位置来引用元组中的项----比如,第一个销售项的价格为sales[0][-1],但我们呢也可以使用名称进行引用,这样会更加清晰:

Python のリスト、タプル、文字列とはどのようなシーケンスですか?

命名的元组提供的清晰与便利通常都是有用的,比如,下面另一个例子:

Python のリスト、タプル、文字列とはどのようなシーケンスですか?

私有方法namedtuple._asdict()返回的是键-值对的映射,其中每个键都是元组元素的名称,值则是对应的值,我们使用映射拆分将映射转换为str.format()方法的键-值参数。

“{manufacturer} {model}”.format(**aircraft._asdict())

字符串

str,字符串在python中是有序序列,这意味着字符串在python中可以做很多操作,比如slice。不过有一点是字符串中某部分无法进行修改,因为是不可变对象。

字符串经常碰到的一个问题就是怎么把 字符串倒序输出。

这时候我们就可以把slice用到字符串中,编写一个倒序输出的函数如下:

def reverse(x):
    if not isinstance(x,basestring):
       raise TypeError ("bad type");
    else:
        return x[::-1]

isinstance是用来判断参数是否是字符串,如果不是的话将会报错。

basestring是str和unicode的父类,可以用来分辨是不是字符串的类型。

推荐学习:Python视频教程

以上がPython のリスト、タプル、文字列とはどのようなシーケンスですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。