ホームページ >バックエンド開発 >Python チュートリアル >Pythonのデータ型とは何ですか?
Python のデータ型には 8 種類あります。数値型 (int およびlong)、float 型、複合型 (complex)、string 型、list 型、tuple 型、dictionary 型、Boolean 型 (True および False) )。
#Python のデータ型には次の 8 種類があります
#数値型
intとlong
intとlongを一緒にする理由は、python3.x以降はintとlongの区別がなくなり、一律にintが使用されるためです。 python2.x はまだ異なります。 Python2.7 を例に挙げます:>>> i = 10 >>> type(i) <type 'int'>
>>> i=10000000000 >>> type(i) <type 'long'>それでは、なぜ 10 が int で、10000000000 が long なのかというと、これは int の最大値に関係しています。int 型の最大値は 231-1 です。 2147483647 の場合は、sys.maxint を使用することもできます。
>>> 2**31-1 2147483647L >>> sys.maxint 2147483647なぜ上記の方法で得られる値がlong型(数字の後ろに'L'が付くとlong型)になるのかと言うと、2**31の値が2147483648でlong型だからです。 long型から1を引いてもlongですが、実はint型の最大値は2147483647
>>> type(2147483647) <type 'int'> >>> type(2147483648) <type 'long'>
float型
float型になります。浮動小数点数は端的に言えば小数点を持つ数値であり、その精度はマシンに依存します。例:>>> i = 10000.1212 >>> type(i) <type 'float'>
complex: 複数形。 の具体的な意味と使用法については、関連ドキュメントを確認してください。
文字列型
文字列を宣言するには、一重引用符、二重引用符、三重引用符 (3 つの一重引用符または 3 つの二重引用符を含む) の 3 つの方法があります。例:>>> str1 = 'hello world' >>> str2 = "hello world" >>> str3 = '''hello world''' >>> str4 = """hello world""" >>> print str1 hello world >>> print str2 hello world >>> print str3 hello world >>> print str4 hello worldPython の文字列には、str 型と unicode 型の 2 つのデータ型があります。 str 型は ASCII エンコーディングを使用するため、中国語を表現できません。 Unicode タイプは Unicode エンコードを使用し、中国語やその他の言語を含む任意の文字を表すことができます。 そして、Python には C 言語のような char 型はなく、単一の文字であっても string 型です。デフォルトで文字列に使用される ASCII エンコーディング。Unicode タイプとして宣言する場合は、文字列の前に 'u' または 'U' を追加する必要があります。例:
>>> str1 = "hello" >>> print str1 hello >>> str2 = u"中国" >>> print str2 中国プロジェクトでは文字列の操作が頻繁に発生し、文字列エンコードの問題によって多くの問題が発生するため、文字列エンコードの問題について説明します。 Python を扱う過程では、ASCII、Unicode、UTF-8 という 3 つのエンコーディングに遭遇することがよくあります。詳しい紹介はこちらの記事をご覧ください。 私の単純な理解は、ASCII エンコードは英語の文字に適しており、Unicode は英語以外の文字 (中国語、韓国語など) に適しており、utf-8 は Uncode の保存および送信形式であるということです。再エンコード(8ビット単位でエンコード)例:
u = u'汉' print repr(u) # u'\u6c49' s = u.encode('UTF-8') print repr(s) # '\xe6\xb1\x89' u2 = s.decode('UTF-8') print repr(u2) # u'\u6c49' 解释:声明unicode字符串”汉“,它的unicode编码为”\u6c49“,经过utf-8编码转换后,它的编码变成”\xe6\xb1\x89“。
コーディング経験の要約:
1. Python ファイルのヘッダーでエンコード形式を宣言します;#-*- coding: utf-8 -*-2.文字列 Unicode 型として宣言されています。つまり、文字列の前に u または U を追加します;3. ファイルの読み取りおよび書き込み操作には、組み込みの open( の代わりに codecs.open() を使用することをお勧めします。 ). 1 つの原則に従い、どのフォーマットを使用するか 1 つのフォーマットで書き込み、どのフォーマットを読み取るか; ANSI フォーマットで保存されたテキスト ファイルに複数の単語「中国語文字」があると仮定します。コードを直接実行し、それを GUI または IDE で読みたい場合 (たとえば、Sublime Text または pydev で) IDE で印刷すると、コーデックがエンコーディングに従ってコンテンツを読み取るため、文字化けまたは例外が表示されます。テキスト自体の形式:
f = codecs.open("d:/test.txt") content = f.read() f.close() print content
Change 次の方法を使用します (中国語でのみ機能します):
# -*- coding: utf-8 -*- import codecs f = codecs.open("d:/test.txt") content = f.read() f.close() if isinstance(content,unicode): print content.encode('utf-8') print "utf-8" else: print content.decode('gbk').encode('utf-8')
List type
リストは変更可能なコレクション型であり、その要素は数値や文字列などの基本型、リスト、タプル、辞書などのコレクション オブジェクト、さらにはカスタム型にすることができます。次のように定義されます:>>> nums = [1,2,3,4] >>> type(nums) <type 'list'> >>> print nums [1, 2, 3, 4] >>> strs = ["hello","world"] >>> print strs ['hello', 'world'] >>> lst = [1,"hello",False,nums,strs] >>> type(lst) <type 'list'> >>> print lst [1, 'hello', False, [1, 2, 3, 4], ['hello', 'world']]インデックスを使用してリスト要素にアクセスします。インデックスは 0 から始まり、負のインデックスをサポートし、-1 が最後のインデックスです。
>>> lst = [1,2,3,4,5] >>> print lst[0] >>> print lst[-1] >>> print lst[-2]はシャーディング操作をサポートし、次のことができます。 1 つのアクセス 間隔内の要素はさまざまなステップ サイズをサポートし、シャーディングはデータの挿入とコピー操作に使用できます。
nums = [1,2,3,4,5] print nums[0:3] #[1, 2, 3] #前三个元素 print nums[3:] #[4, 5] #后两个元素 print nums[-3:] #[3, 4, 5] #后三个元素 不支持nums[-3:0] numsclone = nums[:] print numsclone #[1, 2, 3, 4, 5] 复制操作 print nums[0:4:2] #[1, 3] 步长为2 nums[3:3] = ["three","four"] #[1, 2, 3, 'three', 'four', 4, 5] 在3和4之间插入 nums[3:5] = [] #[1, 2, 3, 4, 5] 将第4和第5个元素替换为[] 即删除["three","four"] 支持加法和乘法操作 lst1 = ["hello","world"] lst2 = ['good','time'] print lst1+lst2 #['hello', 'world', 'good', 'time'] print lst1*5 #['hello', 'world', 'hello', 'world', 'hello', 'world', 'hello', 'world', 'hello', 'world']リストでサポートされているメソッド。次のメソッドを使用して、 list:
>>> [x for x in dir([]) if not x.startswith("__")] ['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] def compare(x,y): return 1 if x>y else -1 #【append】 在列表末尾插入元素 lst = [1,2,3,4,5] lst.append(6) print lst #[1, 2, 3, 4, 5, 6] lst.append("hello") print lst #[1, 2, 3, 4, 5, 6] #【pop】 删除一个元素,并返回此元素的值 支持索引 默认为最后一个 x = lst.pop() print x,lst #hello [1, 2, 3, 4, 5, 6] #默认删除最后一个元素 x = lst.pop(0) print x,lst #1 [2, 3, 4, 5, 6] 删除第一个元素 #【count】 返回一个元素出现的次数 print lst.count(2) #1 #【extend】 扩展列表 此方法与“+”操作的不同在于此方法改变原有列表,而“+”操作会产生一个新列表 lstextend = ["hello","world"] lst.extend(lstextend) print lst #[2, 3, 4, 5, 6, 'hello', 'world'] 在lst的基础上扩展了lstextend进来 #【index】 返回某个值第一次出现的索引位置,如果未找到会抛出异常 print lst.index("hello") #5 #print lst.index("kitty") #ValueError: 'kitty' is not in list 出现异常 #【remove】 移除列表中的某个元素,如果待移除的项不存在,会抛出异常 无返回值 lst.remove("hello") print lst #[2, 3, 4, 5, 6, 'world'] "hello" 被移除 #lst.remove("kitty") #ValueError: list.remove(x): x not in list #【reverse】 意为反转 没错 就是将列表元素倒序排列,无返回值 print lst #[2, 3, 4, 5, 6, 'world'] lst.reverse() print lst #[2, 3, 4, 5, 6, 'world'] #【sort】 排序 print lst #由于上面的反转 目前排序为 ['world', 6, 5, 4, 3, 2] lst.sort() print lst #排序后 [2, 3, 4, 5, 6, 'world'] nums = [10,5,4,2,3] print nums #[10,5,4,2,3] nums.sort(compare) print nums #[2, 3, 4, 5, 10]リストをイテレータに変換します。 いわゆるイテレータは、next メソッドを持つオブジェクトです (このメソッドは呼び出し時にパラメータを必要としません)。次のメソッドが呼び出されると、反復子は次の値を返します。次のメソッドが呼び出されたが、反復子に返す値がない場合は、StopIteration 例外が発生します。リストに対するイテレータの利点は、イテレータを使用するとリストを一度にメモリに追加する必要がなく、リストのデータに順番にアクセスできることです。 イテレータのパブリック メソッドを表示するには、引き続き上記のメソッドを使用します:
lst = [1,2,3,4,5] lstiter = iter(lst) print [x for x in dir(numiter) if not x.startswith("__")] >>>['next']はい、次のメソッドは 1 つだけです。イテレータの場合は、これを行うことができます:
lst = [1,2,3,4,5] lstiter = iter(lst) for i in range(len(lst)): print lstiter.next() #依次打印 1 2 3 4 5
タプル型
タプル型もリストと同様にシーケンスであり、リストとは異なり、タプル型を変更することはできません。タプルの宣言は次のとおりです。lst = (0,1,2,2,2) lst1=("hello",) lst2 = ("hello") print type(lst1) #<type 'tuple'> 只有一个元素的情况下后面要加逗号 否则就是str类型 print type(lst2) #<type 'str'>
辞書型
辞書型は、Dictionary6c3c0e4ab25bd75a295015325220c902 と同様、キーと値のペアのコレクションです。またはjsのjsonオブジェクト。初期化方法は次のとおりです。dict1 = {} print type(dict1) #<type 'dict'> 声明一个空字典 dict2 = {"name":"kitty","age":18} #直接声明字典类型 dict3 = dict([("name","kitty"),("age",18)]) #利用dict函数将列表转换成字典 dict4 = dict(name='kitty',age=18) #利用dict函数通过关键字参数转换为字典 dict5 = {}.fromkeys(["name","age"]) #利用fromkeys函数将key值列表生成字典,对应的值为None {'age': None, 'name': None} 字典基本的操作方法: #【添加元素】 dict1 = {} dict1["mykey"] = "hello world" #直接给一个不存在的键值对赋值 即时添加新元素 dict1[('my','key')] = "this key is a tuple" #字典的键可以是任何一中不可变类型,例如数字、字符串、元组等 #【键值对个数】 print len(dict1) #【检查是否含有键】 print "mykey" in dict1 #True 检查是否含有键为mykey的键值对 print "hello" in dict1 #False #【删除】 del dict1["mykey"] #删除键为mykey的键值对
继续利用上面的方法查看字典的所有公共方法:
>>> [x for x in dir({}) if not x.startswith("__")] ['clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values', 'viewitems', 'viewkeys', 'viewvalues'] dict.clear() 删除字典中所有元素 dict.copy() 返回字典(浅复制)的一个副本 dict.get(key,default=None) 对字典dict 中的键key,返回它对应的值value,如果字典中不存在此键,则返回default 的值(注意,参数default 的默认值为None) dict.has_key(key) 如果键(key)在字典中存在,返回True,否则返回False. 在Python2.2版本引入in 和not in 后,此方法几乎已废弃不用了,但仍提供一个 可工作的接口。 dict.items() 返回一个包含字典中(键, 值)对元组的列表 dict.keys() 返回一个包含字典中键的列表 dict.values() 返回一个包含字典中所有值的列表 dict.iter() 方法iteritems(), iterkeys(), itervalues()与它们对应的非迭代方法一样,不同的是它们返回一个迭代器,而不是一个列表。 dict.pop(key[, default]) 和方法get()相似,如果字典中key 键存在,删除并返回dict[key],如果key 键不存在,且没有给出default 的值,引发KeyError 异常。 dict.setdefault(key,default=None) 和方法set()相似,如果字典中不存在key 键,由dict[key]=default 为它赋值。 dict.setdefault(key,default=None) 和方法set()相似,如果字典中不存在key 键,由dict[key]=default 为它赋值。
布尔类型
布尔类型即True和False,和其它语言中的布尔类型基本一致。下面列出典型的布尔值
print bool(0) #False print bool(1) #True print bool(-1) #True print bool([]) #False print bool(()) #False print bool({}) #False print bool('') #False print bool(None) #False
推荐教程:《python教程》
以上がPythonのデータ型とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。