高度なデータ/データ型/基本となるデータ型の概要の私のpython学習プロセスの間に録音変換-Day07基本タイプが/高度なコーディング

基本データ型

  • STR(文字列)

    STR:ライン上で再び練習する補完的な方法

    • s.capitalize()最初の文字は大文字と小文字に残り

      s = 'dyLAn'
      print(s.capitalize())   # Dylan
    • s.swapcase()ケースフリップ

      s = 'dYLAN'
      print(s.swapcase())     # Dylan
    • s.title()は大文字各単語の(単語または数字間に特殊文字とスペースであってもよいです)

      s = 'dylan is good man'
      print(s.title())    # Dylan Is Good Man
    • s.center()センター

      s = 'dylan'
      print(s.center(20))         #        dylan        (默认是空格填充)
      print(s.center(20, '@'))    # @@@@@@@dylan@@@@@@@@
    • s.find()要素によってインデックスを見つけるためには、繰り返される場合は、まず、見つからないリターン「1」を見つけるために戻ります

      s = 'dylan'
      print(s.find('a'))  # 3
      print(s.find('b'))  # -1
    • s.index()は、エラーを見つけることができ、重複がある場合、最初の戻りを見つけ、要素を索引を検索します

      s = 'dylan'
      print(s.index('a')) # 3
      print(s.index('b')) # 报错
      # 报错如下:
      Traceback (most recent call last):
        File "/Users/yaoyaoba/Full_stack_22/day07/练习.py", line 8, in <module>
          print(s.index('b'))
      ValueError: substring not found
  • タプル(タプル)

    唯一のタプル要素は、無コンマがない場合、それはタプルではない、それは要素のデータ型と一致しています。

    tu = (2, 3, 4)
    print(tu, type(tu)) # (2, 3, 4) <class 'tuple'>
    tu = (2)
    print(tu, type(tu)) # 2 <class 'int'>
    tu = ('Dylan')
    print(tu, type(tu)) # Dylan <class 'str'>
    tu = ([1, 2, 3])
    print(tu, type(tu)) # [1, 2, 3] <class 'list'>
    • tu.count()統計の数組に現れる要素

      tu = (1, 2, 3, 3, 3, 2, 2, 3,)
      print(tu.count(3))  # 3
    • tu.index()重複がある場合、要素を通ってインデックスを見つける最初の戻りを見つけます

      tu = (1, 2, 3, 3, 3, 2, 2, 3,)
      print(tu.index(3))  # 2
  • リスト(一覧)

    • li.count()要素の統計情報がリストに表示された回数

      li = ['q', 'w', 'e', 'w', 'e', 'r', 't', 'y']
      print(li.count('w'))    # 2
    • li.index()リストから最初のマッチのインデックス値の位置を見つける(エラーを見つけることができません)

      li = ['Dylan', 'yaoyao', 'man', 'girl', 'man']
      print(li.index('Dylan'))    # 0
      print(li.index('aa'))    # 报错
    • li.sort()元の場所にリストをソートします

      li = [3, 4, 2, 5, 7, 9, 8, 1]
      li.sort()  # 它没有反回值,所以只能打印 li
      print(li)  # [1, 2, 3, 4, 5, 7, 8, 9]
      li.sort(reverse=True)  # 加个参数 就变成从大到小排序了.
      print(li)  # [9, 8, 7, 5, 4, 3, 2, 1]
    • li.reverse()リストのソート要素が逆になります

      li = [3, 4, 2, 5, 7, 9, 8, 1]
      li.reverse()  # 它没有反回值,所以只能打印 li
      print(li)  # [1, 8, 9, 7, 5, 2, 4, 3]
    • リスト合計

      l1 = [3, 4, 2, 5, 7, 9, 8, 1]
      l2 = ['Dylan', 'yaoyao', 'man', 'girl', 'man']
      print(l1 + l2)  # [3, 4, 2, 5, 7, 9, 8, 1, 'Dylan', 'yaoyao', 'man', 'girl', 'man']
    • リストを掛けます

      l1 = [3, 4, 2, 5, 7, 9, 8, 1]
      l2 = l1 * 3
      print(l2)   # [3, 4, 2, 5, 7, 9, 8, 1, 3, 4, 2, 5, 7, 9, 8, 1, 3, 4, 2, 5, 7, 9, 8, 1]
    • 関連演習

      li = [3, 4, 2, 5, 7, 9, 8, 1]
      # 索引为奇数对应的元素删除(不能一个一个删除,此l1只是举个例子,里面的元素不定)。
      # 正常思路:
      # 先将整个列表的索引整出来。
      for index in range(len(li)):
          if index % 2 == 1:
              li.pop(index)
      print(li)   # 会报错,因为超出了索引范围
      
      # 最简单的方法
      li = [3, 4, 2, 5, 7, 9, 8, 1]
      del li[1: :2]   # 通过切片删
      print(li)   # [3, 2, 7, 8]
      
      # 倒着删
      for index in range(len(li)-1,-1,-1):
          if index % 2 == 1:
              li.pop(index)
      print(li)   # [3, 2, 7, 8]
      
      # 思维置换
      li = [3, 4, 2, 5, 7, 9, 8, 1]
      new_li = []
      for index in range(len(li)):
          if index % 2 = 0:
              new_li.append(l1[index])
      l1 = new_li
      print(li)   # [3, 2, 7, 8]
      
      # 总结:
      # 循环一个列表时,最好不要改变原列表的大小,这样会影响你的最终结果。
  • 辞書(辞書)

    • dic.popitem()バージョン3.5の前に、最後を削除するには3.6の後、ランダム削除をpopitem、戻り値があります

      dic = {'name': 'Dylan', 'age': 16}
      ret = dic.popitem()
      print(ret,dic)  # ('age', 16) {'name': 'Dylan'}
    • dic.update()更新または増加する(非常に重要)を

      # 直接增加键值对
      dic = {'name': 'Dylan', 'age': 16}
      dic.update(sex = '男', height = 178)
      print(dic)  # {'name': 'Dylan', 'age': 16, 'sex': '男', 'height': 178}
      
      # 更新己有键值对
      dic = {'name': 'Dylan', 'age': 16}
      dic.update(age=33)
      print(dic)  # {'name': 'Dylan', 'age': 33}
      
      # 元组拆包增加键值对 (面试会考)
      dic = {'name': 'Dylan', 'age': 16}
      dic.update([(1, 'a'), (2, 'b'), (3, 'c')])
      print(dic)  # {'name': 'Dylan', 'age': 16, 1: 'a', 2: 'b', 3: 'c'}
      
      # 更新,有则覆盖,无则添加
      dic = {'name': 'Dylan', 'age': 16}
      dic1 = {'age': 33, 'sex': 'man'}
      dic.update(dic1)
      print(dic)  # {'name': 'Dylan', 'age': 33, 'sex': 'man'}
    • dic.fromkeys()共通の値と反復可能からキー

      dic = dict.fromkeys('abc', 100)
      print(dic)  # {'a': 100, 'b': 100, 'c': 100}  注意这里的值是共用的一个 id
      
      dic = dict.fromkeys([1, 2, 3], 'Dylan')
      print(dic)  # {1: 'Dylan', 2: 'Dylan', 3: 'Dylan'}
      
      # 这有个坑,注意,面试题
      dic = dict.fromkeys([1, 2, 3], [])
      print(dic)  # {1: [], 2: [], 3: []}
      dic[1].append(123)  # 因为是共用的值,所以改变一个,其它的也都会变
      print(dic)  # {1: [123], 2: [123], 3: [123]}
    • 演習

      # 将字典中键含有'k'元素的键值对删除。
      dic = {'k1': 'Dylan', 'k2': 'xian', 'k3': '男', 'age': 14}
      
      # 入坑思路:
      dic = {'k1': 'Dylan', 'k2': 'xian', 'k3': '男', 'age': 14}
      for key in dic:
          if 'k' in key:
              dic.pop(key)
      print(dic)  # 报错了
      # 注意:循环一个字典时,如果改变这个字典的大小,就会报错,这是坑。
      
      # 换个思路,我们把循环出来带有'k'的键放到一个列表中,再用列表循环删字典里的键
      dic = {'k1': 'Dylan', 'k2': 'xian', 'k3': '男', 'age': 14}
      li = []
      for key in dic:
          if 'k' in key:
              li.append(key)
      for  i in li:
          dic.pop(i)
      print(dic)  # {'age': 14}
      
      # 再来个简单的
      dic = {'k1': 'Dylan', 'k2': 'xian', 'k3': '男', 'age': 14}
      for key in list(dic.keys()):    # {'k1': 'Dylan', 'k2': 'xian', 'k3': '男', 'age': 14}
          if 'k' in key:
              dic.pop(key)
      print(dic)  # {'age': 14}

データ型の変換

現在、学習データの種類:int型/ブール/ STR /リスト/タプル/ dictの/セット、これらのデータ型の間では相互に変換することができ、そしていくつかの変換は非常に重要な、といくつかの基本的な必要性です。

  • int型/ブール/ STR 3つの変換の間で

    # int ----> bool
    i = 100
    print(bool(i))  # True  非零即 True
    i1 = 0
    print(bool(i1)) # False 零即是 False
    
    # bool ----> int
    t = True
    print(int(t))   # 1  True = 1
    f = False
    print(int(f))   # 0  False = 0
    
    # int ----> str
    i = 100
    print(str(i))   # '100'
    
    # str ----> int 全部由数字组成的字符串才可以转化成数字
    s = '90'
    print(int(s))   # 90
    
    # str ----> bool
    s1 = 'Dylan'
    s2 = ''
    print(bool(s1)) # True 非空即 Treu
    print(bool(s2)) # False
    
    # bool ----> str    # 没有什么实际意义
    t1 = True
    t2 = False
    print(str(t1))  # True
    print(str(t2))  # False
  • STR /リストの両方の変換

    # str ----> list
    s = 'Dylan is good man'
    print(s.split())    # ['Dylan', 'is', 'good', 'man']
    
    # list ----> str
    li = ['Dylan', 'is', 'good', 'man']
    print(' '.join(li)) # Dylan is good man
  • リスト/セット変換の両方

    # list ----> set
    li = ['Dylan', 'is', 'good', 'man']
    print(set(li))  # {'is', 'Dylan', 'good', 'man'}
    
    # set ----> list
    set1 = {'is', 'Dylan', 'good', 'man'}
    print(list(set1))   # ['Dylan', 'good', 'man', 'is'] 注意转换过来的是无序的
  • STR /バイトの両方の変換

  • # str ----> bytes
    s = '海洋'
    print(s.encode('utf-8'))    # b'\xe6\xb5\xb7\xe6\xb4\x8b'
    
    # bytes ----> str
    b = b'\xe6\xb5\xb7\xe6\xb4\x8b'
    print(b.decode('utf-8'))    # 海洋
  • すべてのデータは、ブール値に変換することができます

    '', 0, (), {}, [], set(), None

基本データ型の概要

  • 占有収納スペースを区別することにより、(低〜高)

    数字
    字符串
    集合:无序,即无序存索引相关信息
    元组:有序,需要存索引相关信息,不可变
    列表:有序,需要存索引相关信息,可变,需要处理数据的增删改
    字典:有序,需要存key与value映射的相关信息,可变,需要处理数据的增删改(3.6之后有序)
  • 格納された値の数で区別

    スカラ/アトムタイプ 数値、文字列
    コンテナタイプ リスト、タプル、辞書
  • 変数不変で区別

    変数 リスト、辞書
    不変 数値、文字列、タプル、ブール
  • 区別するためにアクセス

    直接アクセス デジタル
    シーケンシャルアクセス(シーケンスタイプ) 文字列、リスト、タプル
    アクセスキーの値(マッピングタイプ) 辞書

コーディング高度な

  • ASCIIコード:文字、数字、特殊文字と01010101の対応が含まれています。

  01000001 1バイト文字。

  • GBKは:のみ国語(英語の文字、数字、特殊文字)0101010の対応関係が含まれています。

  01000001 ASCIIコードの文字:1バイトで表現される文字。

  2バイト文字表記:0,100,100,101,000,010中国で。

  • Unicodeはテキストとバイナリ0101001の世界との間のすべての通信が含まれています。

  01000001 01000010 01000011 00000001

  01000001 01000010 01100011 00000001 B

  0,100,100,101,000,010 0,110,001,100,000,001で

  • UTF-8:(表し8バイト文字の最小値を持つ)テキストとバイナリ0101001の世界との間のマッピングが含まれています。

  01000001 ASCIIコードの文字:1バイトで表現される文字。

  2バイト文字表記:01000001 01000010(などポルトガル語、スペイン語、ヨーロッパ言語)へ。

  0,100,100,101,000,010で01100011アジアの文字、文字3バイト。

  • 互いに異なる暗号を認識しません。

  • すべてのUnicodeでエンコードされ、メモリ内のデータが、ネットワーク伝送用またはハードディスクに格納されたデータが非Unicodeエンコーディング(UTF-8、GBKなど)でなければならない場合。

    • 英文:

      STR: 'こんにちは'

      エンコーディングメモリ:ユニコード

      症状:「こんにちは」

      バイト:

      エンコードメモリ:非Unicode

      式:b'hello "

    • 中文:

      STR:

      エンコーディングメモリ:ユニコード

      式:「中国」

      バイト:

      エンコードメモリ:非Unicode#UTF-8

      フォーム:B '\ xe4 \ xb8 \ XAD \ xe5 \ x9b \ XBD'

      # str ---> bytes
      s1 = '中国'
      b1 = s1.encode('utf-8')  # 编码
      print(b1,type(b1))  # b'\xe4\xb8\xad\xe5\x9b\xbd'
      #b1 = s1.encode('gbk')  # 编码  # b'\xd6\xd0\xb9\xfa' <class 'bytes'>
      
      # bytes---->str
      b1 = b'\xe4\xb8\xad\xe5\x9b\xbd'
      s2 = b1.decode('utf-8')  # 解码
      print(s2)
      # gbk ---> utf-8
      b1 = b'\xd6\xd0\xb9\xfa'
      s = b1.decode('gbk')
      # print(s)
      b2 = s.encode('utf-8')
      print(b2)  # b'\xe4\xb8\xad\xe5\x9b\xbd'

おすすめ

転載: www.cnblogs.com/guanshou/p/12064416.html