• python-day2


    一、字节、三元运算、进制

     1、字节

    首先要说明得是,python2 默认是 ASCII,python 3默认是 unicode。Python 3最重要的新特性就是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。但是在Python2中文本和二进制数据没有做清晰的区分。

     1个中文字符 = 2个字节

    1个英文字符(string) = 1个字节
    1个字节(bytes) = 8个bite

    网络实际传输过程中用的 bit,   1000bit/s,1000/8  为实际传过来字节数,在python中的socket网络传输中,用的是字节,而不是字符。

    字符串可以编码(encode)成字节包,字节包也可以解码(decode)成字符串。

     

    Python3中编码和解码,默认字符编码是utf-8,如果想在编码或者解码中起其他字符编码,则换成其他编码。但是在Python2中,默认字符是系统编码,需要自己手动输入字符编码。

    >>> a = "我叫便便"
    >>> a.encode('utf-8')
    b'xe6x88x91xe5x8fxabxe4xbexbfxe4xbexbf'
    >>> a.encode('utf-8').decode('utf-8')
    '我叫便便'

    2、三元运算

    result = 值1 if 条件 else 值2

     如果条件为真:result = 值1
     如果条件为假:result = 值2

    a,b,c = 1,2,5
    d = a if a > b else c
    

    a > b 为True的话 d = a

    a > b 为Falsec的话 d = c

    注:1、条件语句的值,都是布尔类型的值,如:if 条件,  while 条件等;

          2、python 中没有  case

    3、进制

    二进制: 0 1
    八进制: 0~7 000 001 010 011 100 101 110 111 3位
    十进制:0~9 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
    十六进制: 0~F  0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

    进制用在IP地址中:IP地址:255.255.255.255    11111111.11111111.11111111.11111111  8位

    IPv4地址分为A,B,C,D,E类:

    A类:1.0.0.0~126.255.255.255,默认子网掩码/8,即255.0.0.0 (其中127.0.0.0~127.255.255.255为环回地址,用于本地环回测试等用途;

    B类:128.0.0.0~191.255.255.255,默认子网掩码/16,即255.255.0.0;

    C类:192.0.0.0~223.255.255.255,默认子网掩码/24,即255.255.255.0;

    D类:224.0.0.0~239.255.255.255,一般于用组播
    E类:240.0.0.0~255.255.255.255(其中255.255.255.255为全网广播地址,E类地址一般用于研究用途。

    二、列表

    1、列表特点

    列表是Python最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。
    不管列表中的元素是简单的数据类型还是复杂数据类型,都可以增加,修改,删除,查询等操作。

    2、定义列表
    列表在python中属于复杂数据类型(列表、元祖、字典),简单数据类型指:字符串、数字、布尔值.....

    names = list()
    names = [] #定义空列表
    names = ['a','b','c'] #定义非空列表

    3、列表的属性


    type() : 查看是属于哪个类的,属于哪个数据类型

    >>> name=['a','b','c']
    >>> type(name)
    <class 'list'>
    

    id() : 查看变量的内存地址

    >>> id(name)
    4536524616  

    dir() : 查看对象的属性和方法

    >>> dir(name)
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', 
    '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__',
    '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__',
    '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__',
    '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

    name = ['a','b','c'] 

    列表的取值:是从第0个元素开始取值 names[0]、names[1].....
    如果取值>= len(names) 就会报错。

    >>> name[3]
    Traceback (most recent call last):
      File "<pyshell#8>", line 1, in <module>
        name[3]
    IndexError: list index out of range

    注:列表元素支持的数据类型:

    • 支持简单的数据类型: 字符串、数字、布尔值、日期等等

    • 支持复杂的数据类型: 列表、元祖、字典

    3、切片

    列表、元祖、字符串都支持切片。

    >>> names[1:]
    ['b', 'c', 'd', 'a']
    >>> names[1:-1]
    ['b', 'c', 'd']
    >>> names[1:4]
    ['b', 'c', 'd']
    >>> names[-1]
    'a'
    >>> names[-4:-1]
    ['b', 'c', 'd']
    >>> name = names[-4:-1]
    >>> name
    ['b', 'c', 'd']
    >>> name.append('e')
    >>> name
    ['b', 'c', 'd', 'e']
    

     切片小结:

    • 序列始终都是从左向右切片的,不能是从右向左 

    • 列表切片时,起始位的元素是包括的,结束位的元素是不包括(又叫顾头不顾尾),最后一个位置表示步长(names[开始位:结束位:步长])

    • 如果从0位置取值,0可以省略

    • 想取最后一个值时,结束位不能是-1,因为结束位的元素不包括,所以只能留空

    4、列表属性和方法

    (1)append(element) 追加

    >>> name.append('d')
    >>> name
    ['a', 'b', 'c', 'd']

    (2)clear() 清除列表中的所有元素

    >>> name.clear()
    >>> name
    []

    (3)count(element) 统计某个元素在列表中出现的次数

    >>> name.count('a')
    1
    >>> name.append('a')
    >>> name.count('a')
    2
    # 统计某个切片中元素个数
    >>> name[1:].count('a')
    1

    (4)extend(list) 把两个列表 整合成一个列表

    >>> age = [19,20,21,22]
    >>> name.extend(age)
    >>> name
    ['a', 'b', 'c', 'd', 'a', 19, 20, 21, 22]

    (5)index(element) 查看某个元素的第一个值的下标值

    >>> name.index('a')
    0
    >>> name[1:].index('a')
    3

    (6)insert(index,element) 在某个位置上插入一个元素

    >>> name.insert(1,'bianbian')
    >>> name
    ['a', 'bianbian', 'b', 'c', 'd', 'a', 19, 20, 21, 22]

    (7) pop 默认删除最后一个元素,并且把最后一个元素赋值出来

    >>> name.pop()
    22
    >>> name
    ['a', 'bianbian', 'b', 'c', 'd', 'a', 19, 20, 21]
    >>> a = name.pop()
    >>> name
    ['a', 'bianbian', 'b', 'c', 'd', 'a', 19, 20]
    >>> a
    21
    #删除某个下表下的元素
    >>> b = name.pop(1)
    >>> name
    ['a', 'b', 'c', 'd', 'a', 19, 20]
    >>> b
    'bianbian'

    (8) remove(element) 删除某个元素,但是不会把值赋值出来

    >>> name
    ['a', 'b', 'c', 'd', 'a', 19, 20]
    >>> name.remove('a')
    >>> name
    ['b', 'c', 'd', 'a', 19, 20]
    >>> name.remove('a')
    >>> name
    ['b', 'c', 'd', 19, 20]

    (9) reverse() 反转列表中的元素

    >>> name
    ['b', 'c', 'd', 19, 20]
    >>> name.reverse()
    >>> name
    [20, 19, 'd', 'c', 'b']

    (10) sort() 排序

    >>> name
    ['b', 'a', 'm', 'd']
    >>> name.sort()
    >>> name
    ['a', 'b', 'd', 'm']

    (11) del 既可以删除元素、也可以删除 内存对象

    >>> name = ['a','b','c','d']
    >>> id(name)
    2754836098312
    >>> del name[0]
    >>> id(name)
    2754836098312
    >>> del name

    三、元组

    元组跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。

    用途:一般情况下用于自己写的程序能存下数据,但是又希望这些数据不会被改变,比如:数据库连接信息等。

    1、元祖特点

    • 根本特点:元素的内存的地址,不可以被修改

    • 简单的数据类型:可以查看、统计

    • 复杂数据类型:列表和字典

    2、定义元祖

    #定义空元祖
    names = ()
    names = tuple()
    #定义一个非空元祖
    names = ('a','b','c','d')
    

    3、访问元祖中的元素

    >>> name = ('a','b','c','d')
    >>> name[0]
    'a'
    >>> name[1]
    'b'
    >>> name[-1]
    'd'	

    3、切片

    切片参考列表切片。

    >>> name[1:]
    ('b', 'c', 'd') 

    4、方法

    • count()统计元组中一个元素出现的次数

    >>> names = ('a','b','c','d','a','b','a')
    >>> names.count('a')
    3
    • index()

    index() 确认元组中一个元素出现第一次的下标值。

    >>> names.index('a')
    0

    5、元素类型为复杂数据类型

    >>> name = ([1,2,3,4],'a','b')
    >>> name[0].append(5)
    >>> name
    ([1, 2, 3, 4, 5], 'a', 'b')
    >>> id(name[0])
    2754836098312
    >>> name[0].append(6)
    >>> name
    ([1, 2, 3, 4, 5, 6], 'a', 'b')
    >>> id(name[0])
    2754836098312

    可以看出元组的元素类型为复杂数据类型,元组一样可以做追加、统计等操作,且元组的内存地址不变。

    6、enumenrate()用法

    enumenrate()是Python自带的函数,主要用于列表或者元组,功能:是在for循环时,获取列表或者元组的下标值和元素

    • 下标和元素以元组形式输出

    >>> name_list = [('a',1),('b',2)]
    >>> for index in enumerate(name_list):
    ...     print(index)
    #输出结果,获取到的是以元组形式输出,每个元组第一个值表示name_list下标值,第二个值表示name_list的元素    
    (0, ('a', 1))
    (1, ('b', 2))
    
    • 下标值和元素分开输出

    >>> name_list = [('a',1),('b',2)]
    >>> for index,name in enumerate(name_list):
    ...     print(index,name)
    ...
    #第一个值name_list的下标值,第二个是name_list的元素    
    0 ('a', 1)
    1 ('b', 2)
    

    7、isdigit()用法

    判断输出的数值是否是数字类型的变量。

    age=input("age:")
    if age.isdigit():
    	age = int(age)
    	print('your age is:{0}',format(age))
    else:
        print('input is not digit!')  

     




     

  • 相关阅读:
    保存全局Crash报告&发送邮件
    手机端抓包方法
    apk反编译
    保存全局Crash报告
    一个android控件资源网站
    扩展RBAC用户角色权限设计方案
    剑指offer分块总结----------数组
    剑指offer-----合并两个排序的链表
    剑指offer-----单链表反转
    python实现输入一段英文单词后,倒叙输出
  • 原文地址:https://www.cnblogs.com/bianfengjie/p/9355251.html
Copyright © 2020-2023  润新知