Python数据类型

数据类型

整数

  • 0x表示16进制
  • 整数除法
    • /:运算结果是浮点数
      1
      2
      >>> 10/3    3.3333333333333333333335
      >>> 9/3 3.0
    • //: 运算结果是整数
      1
      >>> 10//3   3

      浮点数

  • 浮点数就是小数

字符串

  • 关于转义
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'I\'m \"OK\"!'  # 相当于 I'm "OK"

    # \n表示换行
    print('\\\n\\')
    # \
    #
    # \

    print('\\\t\\')
    # \ \

    print(r'\\\t\\'')
    # \\\t\\
  • \n写在一行不好阅读,为了简化,Python允许用'''...'''格式来表示多行内容

布尔值

只有TrueFalse两种布尔值

  • and运算,都为True才为True
  • or运算,有True就为True
  • not运算, 非运算

空值

None表示空值,None不能理解为00有意义,而None是空值。

变量

必须以英文、数字和_组合,且不能是数字开头

  • 变量本身类型不固定的语言称为==动态语言==
  • 在定义变量时指定的变量类型,称为==静态语言==
    1
    2
    3
    4
    5
    6
    7
    // 例如
    a = 1; // 动态语言
    a = "ABC";


    int b = 123;
    b = "ABC"; //错误

    常量

    常量就是不能变的量,在Python中全部用大写的变量名表示常量
    1
    PI = 3.14159265359
    但事实上,PI也是一个变量,只是大家约定俗成将PI视为常量,如果你一定要改变他的值,也不是不可以

Python的字符串和编码

Python提供了

  • ord()函数获取字符的整数表示
  • chr()函数把编码转化为对应的字符
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> ord("A")
    65
    >>> ord("中")
    20013

    >>> chr(66)
    'B'
    >>> chr(25591)
    '文'

Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干字节。

如果在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes

1
x = b'ABC'  // bytes类型的数据用带`b`前缀的单引号或者双引号表示

以Unicode表示的str通过encode()方法可以编码为指定的bytes(类似转码)

1
2
3
4
5
>>> 'ABC'.encode('ascii')
b'ABC'

>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'

反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes,要把bytes变为str。需要用decode()方法。(类似解码)

1
2
3
4
>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'
'中文'
  • len()方法可以计算str的字符数,如果换成bytes,len()函数就计算字节数
    1
    2
    3
    4
    5
    6
    >>> len(b'ABC')  // 英文字符占用一个字节
    3
    >>> len(b'\xe4\xb8\xad\xe6\x96\x87')
    6
    >>> len('中文'.encode('utf-8')) //中文字符经过转码一般会占用3个字节
    6

格式化输出字符串

1
2
3
4
5
>>> 'Hello, %s' % 'world'
'Hello, world'

>>> 'Hi, %s, you have $%d' %('Michael', 1000000)
'Hi, Michael, you have $1000000'
占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数

list

一种有序集合,可随时添加和删除其中得元素

  • append(elem) 向list中追加元素到末尾
  • insert(i, elem) 把元素插入到指定位置
  • pop(elem) 删除list末尾的元素
    1
    2
    3
    4
    5
    6
    7
    >>> classmates = ['Michael', 'Bob', 'Tracy']
    >>> len(classmates); // 3

    # 向list中追加元素到末尾
    >>> classmates.append('Adam')
    >>> classmates
    ['Michael', 'Bob', 'Tracy', 'Adam']

tuple

元组tuple,一旦初始化就不能修改。

1
>>> classmates = ('Michael', 'Bob', 'Tracy');

在定义tuple的时候,tuple元素就必须被确定下来

1
2
3
4
>>> t = (1, 2)
>>> m = () # 空tuple
>>> n = (1,) # 1个元素的tuple
>>> e = ('a', 'b', ['A', 'B']) # 这是一个可变的tuple

条件判断

  • if else
1
2
3
4
5
6
7
age = 3
if age >= 18:
print('your age is', age);
print('adult')
else:
print('your age is', age);
print('teenager')
  • elif
    1
    2
    3
    4
    5
    6
    7
    age = 3
    if age >= 18:
    print('adult')
    elif age >= 16: # 表示else if
    print('tennager')
    else:
    print('kid')

input

input()返回的数据类型是str, str不能直接喝整数比较,需要把str转换成整数。int()函数可以完成这件事。

循环

  • for x in ... 循环就是把每个元素带入变量x, 然后执行缩进块语句
    1
    2
    3
    4
    sum = 0
    for x in [1, 2, 3, 4, 5, 6, 7]:
    sum = sum + x
    print(sum)
  • while 循环,只要满足条件,就不断循环,条件不满足时退出循环
    1
    2
    3
    4
    5
    6
    sum = 0;
    n = 99;
    while n>0:
    sum = sum + n
    n = n - 2
    print(sum)
  • break退出循环
  • continue跳过当前循环,直接开始下一次循环
    1
    2
    3
    4
    5
    6
    n = 0
    while n < 10:
    n = n + 1
    if n % 2 == 0: # 如果n是偶数,执行continue语句
    continue # continue语句会直接继续下一轮循环,后续print()语句不会执行
    print(n)

dict字典

使用键-值(key-value)存储,具有极快的查找速度

  • pop(key)方法,会从dict中删除对应的键值,返回被删除的值
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
    >>> d['Michael']
    95

    >>> d['Adam'] = 67 # 可以通过指定键值的方式来增加dict元素
    >>> d['Adam']
    67

    >>> d.get('Thomas')
    # None
    >>> d.get('Thomas', -1)
    -1

dictlist相比是一种用空间换取时间的方法,需要牢记:dict的key必须是不可变对象。

dict根据key来计算value的存储位置,如果每次计算的key不同,那dict的内部就混乱了,这个通过key计算未知的方法称为哈希算法(Hash)

set

setdict类似,是一组key的集合,不存储value。由于key不能重复,所以在set中,没有重复的key

  • add(key) 可以添加元素到set中,可以重复添加,但不会有效果
  • remove(key) 可以删除元素
1
2
3
4
5
6
7
8
9
10
11
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}


>>> s.add(4);
>>> s
{1, 2, 3, 4}

>>> s.remove(1);
{2, 3, 4}

set可以看成数学意义上无序和无重复元素的集合,因此set可以做数学意义上的交集、并集等操作

1
2
3
4
5
6
7
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}

>>> s1 | s2
{1, 2, 3, 4}
-------------本文结束感谢您的阅读-------------