組み込みのPythonのデータ構造
これまでのところ、我々は唯一の変数を通じて、いくつかのデータを保存したい場合。あなたが救われるために、より多くのデータが発生した場合でも、可変の時間で、この時間はあまり現実的となります。
私たちは、変数のデータのようなものを大幅に節約できるようにする必要があり、このようなものは、データ構造(データ構造)です。
ただ設定されたデータ構造は、いくつかのデータ構造が一緒に重合します。言い換えれば、彼らは、関連データの収集のシリーズを格納するために使用されています。
Pythonは4つの組み込みデータ構造を提供しますList
(リスト)Tuple
(タプル)、 Dictionary
(辞書)、 Set
(セット)
キャラクターは、彼が一緒に編成するので厳密に言えば、文字列は、データ構造です。
したがって、この章では、文字列で始まる始まります。
弦
文字列の1.1定義
文字列は文字の文字列で、プログラミング言語は、データ型のテキストを表現します
あなたはPythonで1つの文字列を定義し、二重引用符または一重引用符のペアを使用することができます
あなたが使用することができますが、
\"
または\'
文字列の転送が、実際の開発を行います
- あなたは文字列の内容を使用する必要がある場合
"
は、使用することができます'
定義文字列を- あなたは文字列の内容を使用する必要がある場合
'
は、使用することができます"
定義文字列を
str1 = "hello python"
str2 = "你是'王二狗'么"
str3 = '你是"李小花"么'
print(str1)
print(str2)
print(str3)
1.2繰り返し接続と
以前の研究では、文字列、そうで接続、出力の文字列とは何か理解するのに近いです。のは、文字列に、より高度な機能を学び始めましょう。
+
これは、2つの文字列を接続するために使用されます
*
文字列を繰り返して使用
上記の二つの演算子は、変数を操作することができます。
a = "你好"
b = a + "world"
c = b * 3
print(b)
print(c)
二つ以上の文字列リテラルが一緒に書いた場合は、自動的に一緒に接続されます。
d = "a" "b""c" "你好"
print(d) # abc你好
注意:
- 変数が参加することはできません、この方法で接続することができる唯一の文字列リテラルです
- 文字列の間のいずれかの句読点を追加しないでください
- あなたが長い文字列を分割したい場合は、この方法で特に有用です。
text = ("窗前明月光"
"疑是地上霜"
"举头望明月"
"低头思故乡")
print(text)
1.3のGet文字列の長さ
文字列の長さは、文字列の手段の文字数です。内蔵の機能を使用すると、len()
文字列の長さを取得します。len()
シーケンスの任意の長さを得ることができ、我々はもっと後で知っているだろう。
s = "hello world"
print(len(s)) # 11
1.4文字列インデックス(指数)
文字列の各文字には、プログラミング言語で、この数は、一般的にインデックス(着信番号があるindex
添字を)。インデックスによって文字列の各文字を訪問するために単独で使用することができます。
ので、python
何の文字型が存在しない、単一の文字が文字列型を取得する場合でも。
index
より0
インデックスは、最後の文字を開始しました:字符串长度 - 1
s = "hello world"
print(s[0])
print(s[3])
print(s[len(s) - 1])
インデックスも否定することができ、それは計算を開始する権利を表します。-1
それは最後の要素のインデックスです。-0
そして、0
同じです。
s = "hello world"
print(s[-1])
print(s[-2])
print(s[-len(s)])
場合はindex
範囲外、例外がスローされます。だから、範囲の添字アウトを防ぐために注意しなければならない時間を使用しています。
s = "hello world"
print(s[len(s)])
1.5文字列のスライス(slice
)
使用index
のみ単一の文字を取得します。操作や文字列をスライスすると、サブストリングを得ることができます。
Pythonのスライス作業は非常にエレガントです!あなたが他の言語を使用している場合、私はそう言って、なぜ、あなたは知っています。
s = "life is short, use python"
print(s[0:4]) # 获取下标为 0(包括) 到下标为 4(不包括) 的子字符串 "life"
print(s[2:3]) # "f"
print(s[2:]) # fe is short, use python
print(s[:4]) # life
print(s[-2:]) # on
注意:
- スライス、常に含まインデックスは、ラベルの最後に、含まれていません開始
- 最初のインデックスと最後のインデックスを省略することができます。省略された場合、最初の添字はデフォルト値である
0
第二の添え字を省略した場合、デフォルト値は、文字列の長さ
添字を使用しているときが、範囲外の例外をスローした場合、単一の文字を取得します。
しかし、ときスライス、例外は範囲外のスローされていない場合。
s = "life is short, use python"
print(s[9:100]) # hort, use python
print(s[-1:1000]) # n
1.6不変の文字列
不変の文字列を一旦メモリに作成された文字列を指し、命の文字列の内容を変更することはできません。あなただけに、別の文字列を取得したい場合は、文字列を再作成します。
不変の利点は、同期の問題を気にせずに共有されています。私たちなので、すべてを変更することはできません。
そのため、文字列の添字が間違って変更することで、それは例外がスローされます。
s = "life is short, use python"
s[0] = "c" # 不能修改,这行代码会抛出异常
あなたが別の文字列が必要な場合は、次のコードのように、新しいを作成する必要があります。
s = "life is short, use python"
s1 = "P" + s[1:]
print(s1)
いくつかの他の文字列演算子に関連した1.7
フロント学習+、*、[]、[:]
オペレータは文字列を操作することができ、あなたは文字列を操作することができ、他の事業者があります。
in
文字列は、サブ文字列が含まれているかどうかをテスト
s = "python"
print("p" in s) # True s 中是否包含字符串`p`
print("a" in s) # False
not in
in
反対の意味
s = "python"
print("a" not in s) # False
print("P" not in s) # True
%(了解)
フォーマット文字列。書式文字列のグリッドが、そこよりますと、C言語printf()
と同じ書式設定ルールの。
一般的に以下の3種類に使用。
name = input("请输入你姓名:")
age = int(input("请输入你的年龄:"))
print("你好%s,你今年%s, 你的工资是 %.2f" % (name, age, 30000.4598))
1.8一般的な方法の文字列オブジェクト
一部の機能は、学習機能の前に組み込まれている、あなたは直接呼び出すことができます。
いくつかの方法は、以下の文字列オブジェクトを再学習します。(例示的な方法は、より詳細には、特定のオブジェクト指向の研究が続きます)
注:これは、文字列を変更することになる場合には、以下の方法で新しい文字列とリターンを作成する必要があります。
用途:字符串.方法(参数)
コールへ
変換の場合には、文字列
-
s.capitalize()
最初の文字は大文字に変換し、文字列を返しています -
s.lower()
すべて小文字のアルファベットの文字列になり -
s.upper()
大文字の文字列になるすべての文字 -
s.swapcase()
反転ケース -
s.title()
大文字の各単語の最初の文字のタイトル -
s.center(w)
両サイドにスペースを含む文字列のセンター、。
w
これは、充填後の合計の長さです。あなたがスペースを埋めるためにしたくない場合は、2番目の引数は文字でなければなりません渡すことができます。
第二に、テストファンクション文字列は、関数は、これらの値の値はブールである返します
-
s.isalnum()
文字列の長さは、と返された場合、すべての文字は、文字や数字が0より大きいです
True
-
s.isalpha()
文字列の長さが0より大きく、すべての文字が英字、返品された場合
True
-
s.isdigit()
文字列の長さが0より大きく、すべての文字が数値を返している場合
True
-
s.islower()
すべての文字をすべて小文字されています
-
s.isupper()
すべての文字はすべて大文字であるかどうか
-
s.istitle()
資本かどうか文字列の各単語の最初の文字
-
s.isspace()
すべての空白文字かどうかは、少なくとも1つの文字があります
-
s.startswith(prefix, start, end)
範囲かどうかプレフィックスの先頭にスライス[開始、終了]
-
s.endswith(suffix, start, end)
スライス[START、END]サフィックスの範囲で終わるかどうか
第三に、文字列の検索と置換
s.split(sep, maxsplit)
使用sep
あなたが合格しない場合は、文字列をカットするためにsep
空白のデフォルトのmaxsplit
部門の最大数をs.rsplit(sep, maxsplit)
使用sep
あなたが合格しない場合は右側からは、文字列をカットしsep
、空白のデフォルトのmaxsplit
部門の最大数をs.splitelines(keepends)
文字列がtrueの場合、リザーブラインセパレータ、bool値をkeepends、デフォルトはFalseで、行に分割しましたs.join(seq)
SEQ接続Sの配列で表さ
第四に、文字列の部門、およびそれらの組み合わせ
-
s.find(str, beg=0, end=len)
ストリングストリングかどうかを検出する方法を含むが
str
、指定された場合beg
(スタート)とend
サブリターンのインデックス値が含まれる場合(端)の範囲、そうでなければ、指定された範囲内に含まれるかどうかをチェックする-1。 -
s.rfind(str, beg=0, end=len)
右側からの検出器列がサブストリングが含まれているstr
、指定された場合beg
(スタート)とend
サブリターンのインデックス値が含まれる場合(端)の範囲、そうでなければ、指定された範囲内に含まれるかどうかをチェックする-1。 -
s.index(str, beg=0, end=len)
ストリングストリングかどうかを検出する方法を含むがstr
、指定された場合beg
(開始)およびend
(エンド)範囲ストリングがそうでない場合、エラーが返される戻りのインデックス値が含まれている場合、指定された範囲内に含まれるかどうかをチェックします。 -
s.rindex(str, beg=0, end=len)
右側からの検出器列がサブストリングが含まれているstr
指定した場合、beg
(開始)及びend
(エンド)範囲をサブリターンの指標値を含む場合、そうでない場合はエラーが返され、指定された範囲内に含まれるかどうかをチェックします。 -
count(substr, start, end)
スライス[開始、終了]の範囲内で発生する計算の数のsubstr -
replace(oldstr, newstr, count)
oldstr NewStrによってすでに置き換え、交換回数をカウント -
s.strip([chars])
文字の左右両端を
chars
削除しました。あなたはパラメータを渡していない場合は、デフォルトのスペースを削除します。中間は削除されません。 -
s.lstrip([chars])
s.rstrip([chars])
指定された文字を左または右に外し、デフォルトはスペースがあります
s = "hello"
print(s.capitalize())
print(s.center(30, "z"))
print(s.find("el"))
print("123".isdigit())
print("122".isnumeric())
print(" ab c ".strip())
print("aabbaa".strip("a"))
print(max([100, 30, 40, 90]))
print("10.2.3.5".split("."))
print("hell world".title())