python中數據類型及簡單操作

存儲單位

  • 最小單位是bit,表示二進制的0或1,一般寫作b
  • 最小的存儲單位是字節,用byte表示,1B = 8b
  • 1024B = 1KB
  • 1024KB = 1MB
  • 1024MB = 1GB
  • 1024GB = 1TB
  • 1024TB = 1PB
  • 2^32 = 2^10 * 2^10 * 2^10 * 2^2 = 4GB

進制轉換

  • 十進制:
    • 基數爲0~9,逢10進1
    • 示例:123 = 1 * 10^2 + 2 * 10^1 + 3*10^0 = 100 + 20 + 3 = 123
  • 二進制:
    • 基礎0和1,逢2進1,python中使用’0b’表示
    • 示例:0b110100 = 2^5 + 2^4 + 2^2 = 32 + 16 + 4 = 52
    • 十進制轉二進制:除2取餘,倒序書寫
      • 22 = 0b10110
  • 八進制:
    • 基數0~7,逢8進1,python中使用’0o’表示
    • 示例:0o123 = 1 * 8^2 + 2 * 8^1 + 3 * 8^0 = 64 + 16 + 3 = 83
    • 八進制轉二進制:八進制的1位表示3位二進制數
      • 0o123 = 0b001 010 011
  • 十六進制:
    • 基數09、AF,逢16進1,python中使用’0x’表示
    • 示例:0xAB = 10 * 16^1 + 11 * 16^0 = 160 + 11 = 171
    • 十六進制轉二進制:十六進制1位表示4位二進制數
      • 0xABC = 0b1010 1011 1100
  • 計算機中的數據,是以哪種進制存儲的?爲什麼?
    • 二進制,因爲計算機設計時只識別二進制。具體原因如下:
    • 穩定性高(0和1)、成本低(技術上易實現)、與生活中的真假邏輯相吻合(易於解決實際問題)
  • 計算機中的數據如何存儲?
    • 如何存儲負數?
      • 最高位作爲符號位:0表示正數,1表示負數
      • 雖然犧牲了最高位,但是可以解決負數存儲問題,進而簡化了硬件設計成本
    • 原碼反碼和補碼
      • 正數的三碼一致,只有負數纔有反碼和補碼
      • 負數的反碼等與原碼符號位不變,其餘位取反
      • 負數的補碼等於反碼加1
      • 計算機中的數據都是以補碼存儲的

數據類型

  • 不同的數據類型都是爲了解決實際問題而出現,就是爲了進行各種運算而存在

  • Python中常用數據類型:整型、浮點、布爾、字符串、列表、元組、字典、集合、空等

  • 整型(int):就是數學中的整數

  • 浮點(float):就是數學中的小數
    pi = 3.14
    print(pi)
    print(type(pi))

    # 科學計數法
    b = 3.14e-3
    print(b)
    
  • 複數(complex):瞭解內容
    c = 3 + 5j
    print(type©)

  • 布爾(bool):只有True/False兩個值,對應於生活中的真假

  • 空(NoneType):只有一個值None

  • 字符串(str):使用引號括起來的一串字符

    • 可以使用單引號雙引號或者三引號定義
    • 轉義:就是時特定的字符失去原有的意義,使用’'進行轉義
      • 單引號中的單引號,雙引號中的雙引號
      • 很多時候’'也需要轉義
      • 特殊:’\n’表示換行,’\t’表示製表
  • 列表(list):通過[]進行定義,可以存儲一系列的任意數據,可以添加刪除元素

    • 示例
      lt = [1, 3.14, ‘hello’]
      print(lt)
      print(type(lt))

      提取元素,下表從0開始,存在越界問題

      print(lt[0])
  • 元組(tuple):通過()進行定義,可以存儲一系列的任意數據,不可以添加刪除元素

    • 示例
      tp = (‘小芳’, ‘小敏’, ‘小杜’)
      print(tp)
      print(type(tp))
      print(tp[0])

      定義單個元素的元組時需要添加一個’,’

      tp2 = (123,)
      print(type(tp2))

  • 集合(set),使用{}進行定義,可以存貯一系列的任意數據,集合中的數據不能重複

    • 示例
      s = {‘李白’, ‘辛棄疾’, ‘蘇東坡’, ‘歐陽修’, ‘李白’, ‘杜甫’}
      s2 = {‘李白’, ‘宋曉峯’, ‘杜甫’}
      print(s)
      print(type(s))

      交集

      print(s & s2)

      並集

      print(s | s2)

      差集

      print(s - s2)
      print(s2 - s)

      定義空集合,不能使用{},這是留給定義空字典使用的

      s3 = {}

      s3 = set()
      print(type(s3))

  • 字典(dict),使用{}進行定義

    • 元素是由鍵值對組成

    • 鍵和值之間使用’:'連接

    • 字典中的鍵時唯一的,值可以是任意的

    • 字典中的元素可以添加和刪除

    • 示例:

      xiaoming = {‘name’: ‘小明’, ‘age’: 20}
      print(xiaoming)
      print(type(xiaoming))

      根據鍵提取值

      print(xiaoming[‘name’])

      根據不存在的鍵獲取值時會報KeyError錯

      print(xiaoming[‘height’])

      等價於xiaoming[‘name’],但是當鍵不存在時不報錯,返回None

      print(xiaoming.get(‘height’))

      統計元素個數

      字典表示鍵值對個數

      print(len(xiaoming))

      列表表示元素個數

      print(len(lt))

      字符串表示字符個數

      print(len(‘你好’))

類型轉換

  • 隱式類型轉換:運算、條件判斷等
  • 強制類型轉換:使用專門的函數就行類型轉換
    int:轉換爲整型,可以通過base參數指示帶轉換數據的格式
    float:轉換爲浮點數
    str:轉換爲字符串
    list:轉換爲列表,參數必須是可迭代對象(str、tuple、set、dict)
    tuple:轉換爲元組,使用方法同上
    set:轉換爲集合,使用方法同上
    dict:轉換爲字典,參數的內容必須是成對出現的

獲取變量地址

  • 函數:id

  • 示例:
    a = 10
    print(id(a))
    # 通過id可以獲取變量的地址
    # a = 20
    # print(id(a))
    b = 10
    print(id(b))

  • 說明:相當於儲存變量的內存塊的地址編碼

    數據簡單操作

    • 字符串

      s = 'hello'
      # 字符串的重疊
      s = 'hello' * 2
      # 字符串的拼接
      s = 'hello' + 'world'
      print(s)
      # 統計字符個數
      print(len(s))
      
      # 提取單個字符,通過下標提取
      # 從開頭提取,下標從0開始
      print(s[0])
      # 從結尾提取,下標從-1開始
      print(s[-1])
      
      # 切片:s[開始:結束:步進]
      s = 'abcdefg'
      # 包括起始下表,不包括結束下標,默認的步進值爲1
      print(s[0:3])
      print(s[2:4])
      # 當一邊沒有指定就提取到該邊的邊界
      print(s[:4])
      print(s[3:])
      print(s[1:-2])
      print(s[-4:])
      print(s[:])
      print(s[::2])
      # 倒序提取
      print(s[::-1])
      
      # 格式化
      
      # %s:字符串
      # %d:整數
      # %f:小數
      # %c:單個字符
      print('俺叫%s,暗戀%s,她今年%d歲了' % (name, like, age))
      
      print('我是{},今年{},暗戀{}'.format(name, age, like))
      print('我是{2},今年{1},暗戀{0}'.format(name, age, like))
      print('我是{nm},今年{a},暗戀{l}'.format(nm=name, a=age, l=like))
      
    • 列表

      lt = [1, 2, 3, 4, 5]
      
      print(lt[0])
      print(lt[-1])
      print(lt[1:4])
      print(len(lt))
      
      # 修改
      lt[0] = 100
      
      # 添加的對象在列表是一個元素
      lt.append(250)
      # lt.append(['hello', 'world'])
      # 將可迭代對象的每個元素挨個添加
      lt.extend(['hello', 'world'])
      
      # 在指定位置插入元素
      lt.insert(3, 'good')
      
      # 根據下標刪除元素
      del lt[0]
      # 根據值刪除元素
      lt.remove(250)
      
      # 刪除並返回指定下標的元素,默認最後一個元素
      last = lt.pop(4)
      print(last)
      
      # 查詢索引號
      lt = [1, 2, 3, 1, 1]
      print(lt.index(1))
      # 逆序
      # lt.reverse()
      # 統計指定對象出現的次數
      print(lt.count(1))
      lt = [1, 5, 7, 3]
      # 排序,默認升序排序,可以通過reverse指定是否倒序排序
      lt.sort(reverse=True)
      print(lt)
      

    ASCII

    • 說明:美國信息交換標準代碼,其實就是給每個字符使用一個整數表示
    • 函數:
      • ord:根據字符獲取ASCII碼
      • chr:根據ASCII碼轉換成字符
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章