Python基础(二)

  • Python 运算符(算术运算、比较运算、赋值运算、逻辑运算、成员运算)

  • 基本数据类型(数字、布尔值、字符串、列表、元组、字典、set集合)

  • for 循环

  • enumrate

  • range和xrange

  • 编码与进制转换

Python 运算符

1、算术运算:

2、比较运算:

3、赋值运算:

4、逻辑运算:

 5、成员运算:

基本数据类型

1、数字

int(整型)

  在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647

  在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

#返回表示该数字的时占用的最少位数        >>> (951).bit_length()        10 #返回绝对值        >>> (95).__abs__()        95        >>> (-95).__abs__()        95 #用来区分数字和字符串的        >>> (95).__add__(1)        96        >>> (95).__add__("1")        NotImplemented #判断一个整数对象是否为0,如果为0,则返回False,如果不为0,则返回True        >>> (95).__bool__()        True        >>> (0).__bool__()        False #判断两个值是否相等        >>> (95).__eq__(95)        True        >>> (95).__eq__(9)        False #判断是否不等于        >>> (95).__ne__(9)         True        >>> (95).__ne__(95)        False #判断是否大于等于        >>> (95).__ge__(9)        True        >>> (95).__ge__(99)        False #判断是否大于        >>> (95).__gt__(9)        True        >>> (95).__gt__(99)        False #判断是否小于等于        >>> (95).__le__(99)        True        >>> (95).__le__(9)        False #判断是否小于        >>> (95).__lt__(9)         False        >>> (95).__lt__(99)        True #加法运算        >>> (95).__add__(5)        100 #减法运算        >>> (95).__sub__(5)        90 #乘法运算        >>> (95).__mul__(10)        950 #除法运算        >>> (95).__truediv__(5)        19.0 #取模运算        >>> (95).__mod__(9)        5 #幂运算        >>> (2).__pow__(10)        1024 #整除,保留结果的整数部分        >>> (95).__floordiv__(9)        >>> #转换为整型        >>> (9.5).__int__()        9 #返回一个对象的整数部分        >>> (9.5).__trunc__()        9 #将正数变为负数,将负数变为正数        >>> (95).__neg__()        -95        >>> (-95).__neg__()        95 #将一个正数转为字符串        >>> a = 95        >>> a = a.__str__()        >>> print(type(a))         
 #将一个整数转换成浮点型        >>> (95).__float__()        95.0 #转换对象的类型        >>> (95).__format__('f')        '95.000000'        >>> (95).__format__('b')        '1011111' #在内存中占多少个字节        >>> a = 95        >>> a.__sizeof__()        28
class int(object):    """    int(x=0) -> integer    int(x, base=10) -> integer    Convert a number or string to an integer, or return 0 if no arguments    are given.  If x is a number, return x.__int__().  For floating point    numbers, this truncates towards zero.    If x is not a number or if base is given, then x must be a string,    bytes, or bytearray instance representing an integer literal in the    given base.  The literal can be preceded by '+' or '-' and be surrounded    by whitespace.  The base defaults to 10.  Valid bases are 0 and 2-36.    Base 0 means to interpret the base from the string as an integer literal.    >>> int('0b100', base=0)    """    def bit_length(self): # real signature unknown; restored from __doc__        """        int.bit_length() -> int        Number of bits necessary to represent self in binary.        """        """        表示该数字返回时占用的最少位数        >>> (951).bit_length()        """        return 0    def conjugate(self, *args, **kwargs): # real signature unknown        """ Returns self, the complex conjugate of any int."""        """        返回该复数的共轭复数         #返回复数的共轭复数        >>> (95 + 11j).conjugate()        (95-11j)        #返回复数的实数部分        >>> (95 + 11j).real        95.0        #返回复数的虚数部分        >>> (95 + 11j).imag        11.0        """        pass    @classmethod # known case    def from_bytes(cls, bytes, byteorder, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__        """        int.from_bytes(bytes, byteorder, *, signed=False) -> int        Return the integer represented by the given array of bytes.        The bytes argument must be a bytes-like object (e.g. bytes or bytearray).        The byteorder argument determines the byte order used to represent the        integer.  If byteorder is 'big', the most significant byte is at the        beginning of the byte array.  If byteorder is 'little', the most        significant byte is at the end of the byte array.  To request the native        byte order of the host system, use `sys.byteorder' as the byte order value.        The signed keyword-only argument indicates whether two's complement is        used to represent the integer.        """        """        这个方法是在Python3.2的时候加入的,python官方给出了下面几个例子:        >>> int.from_bytes(b'\x00\x10', byteorder='big')        >>> int.from_bytes(b'\x00\x10', byteorder='little')        >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)        -1024        >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=False)        >>> int.from_bytes([255, 0, 0], byteorder='big')        """        pass    def to_bytes(self, length, byteorder, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__        """        int.to_bytes(length, byteorder, *, signed=False) -> bytes        Return an array of bytes representing an integer.        The integer is represented using length bytes.  An OverflowError is        raised if the integer is not representable with the given number of        bytes.        The byteorder argument determines the byte order used to represent the        integer.  If byteorder is 'big', the most significant byte is at the        beginning of the byte array.  If byteorder is 'little', the most        significant byte is at the end of the byte array.  To request the native        byte order of the host system, use `sys.byteorder' as the byte order value.        The signed keyword-only argument determines whether two's complement is        used to represent the integer.  If signed is False and a negative integer        is given, an OverflowError is raised.        """        """        python官方给出了下面几个例子:        >>> (1024).to_bytes(2, byteorder='big')        b'\x04\x00'        >>> (1024).to_bytes(10, byteorder='big')        b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00'        >>> (-1024).to_bytes(10, byteorder='big', signed=True)        b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00'        >>> x = 1000        >>> x.to_bytes((x.bit_length() // 8) + 1, byteorder='little')        b'\xe8\x03'        """        pass    def __abs__(self, *args, **kwargs): # real signature unknown        """ abs(self)"""        """        返回一个绝对值        >>> (95).__abs__()        -95        >>> (-95).__abs__()        """        pass    def __add__(self, *args, **kwargs): # real signature unknown        """ Return self+value."""        """        加法,也可区分数字和字符串        >>> (95).__add__(1)        >>> (95).__add__("1")        NotImplemented        >>>        """        pass    def __and__(self, *args, **kwargs): # real signature unknown        """ Return self&value."""        pass    def __bool__(self, *args, **kwargs): # real signature unknown        """ self != 0 """        """        判断一个整数对象是否为0,如果为0,则返回False,如果不为0,则返回True        >>> (95).__bool__()        True        >>> (0).__bool__()        False        """        pass    def __ceil__(self, *args, **kwargs): # real signature unknown        """ Ceiling of an Integral returns itself. """        pass    def __divmod__(self, *args, **kwargs): # real signature unknown        """ Return divmod(self, value). """        """        返回一个元组,第一个元素为商,第二个元素为余数        >>> (9).__divmod__(5)        (1, 4)        """        pass    def __eq__(self, *args, **kwargs): # real signature unknown        """ Return self==value. """        """        判断两个值是否相等        >>> (95).__eq__(95)        True        >>> (95).__eq__(9)        False        """        pass    def __float__(self, *args, **kwargs): # real signature unknown        """ float(self) """        """        将一个整数转换成浮点型        >>> (95).__float__()        95.0        """        pass    def __floordiv__(self, *args, **kwargs): # real signature unknown        """ Return self//value. """        """        整除,保留结果的整数部分        >>> (95).__floordiv__(9)        """        pass    def __floor__(self, *args, **kwargs): # real signature unknown        """ Flooring an Integral returns itself. """        """        返回本身        >>> (95).__floor__()        """        pass    def __format__(self, *args, **kwargs): # real signature unknown        """        转换对象的类型        >>> (95).__format__('f')        '95.000000'        >>> (95).__format__('b')        '1011111'        """        pass    def __getattribute__(self, *args, **kwargs): # real signature unknown        """ Return getattr(self, name). """        """        判断这个类中是否包含这个属性,如果包含则打印出值,如果不包含,就报错了        >>> (95).__getattribute__('__abs__')        
        >>> (95).__getattribute__('__aaa__')        Traceback (most recent call last):        File "
", line 1, in 
        AttributeError: 'int' object has no attribute '__aaa__'        """        pass    def __getnewargs__(self, *args, **kwargs): # real signature unknown        pass    def __ge__(self, *args, **kwargs): # real signature unknown        """ Return self>=value. """        """        判断是否大于等于        >>> (95).__ge__(9)        True        >>> (95).__ge__(99)        False        """        pass    def __gt__(self, *args, **kwargs): # real signature unknown        """ Return self>value. """        """        判断是否大于        >>> (95).__gt__(9)        True        >>> (95).__gt__(99)        False        """        pass    def __hash__(self, *args, **kwargs): # real signature unknown        """ Return hash(self). """        """        计算哈希值,整数返回本身        >>> (95).__hash__()        >>> (95.95).__hash__()        """        pass    def __index__(self, *args, **kwargs): # real signature unknown        """ Return self converted to an integer, if self is suitable for use as an index into a list. """        pass    def __init__(self, x, base=10): # known special case of int.__init__        """         这个是一个类的初始化方法,当int类被实例化的时候,这个方法默认就会被执行        """        """        int(x=0) -> integer        int(x, base=10) -> integer        Convert a number or string to an integer, or return 0 if no arguments        are given.  If x is a number, return x.__int__().  For floating point        numbers, this truncates towards zero.        If x is not a number or if base is given, then x must be a string,        bytes, or bytearray instance representing an integer literal in the        given base.  The literal can be preceded by '+' or '-' and be surrounded        by whitespace.  The base defaults to 10.  Valid bases are 0 and 2-36.        Base 0 means to interpret the base from the string as an integer literal.        >>> int('0b100', base=0)        # (copied from class doc)        """           pass    def __int__(self, *args, **kwargs): # real signature unknown        """ int(self) """        """        转换为整型        >>> (9.5).__int__()        """        pass    def __invert__(self, *args, **kwargs): # real signature unknown        """ ~self """        pass    def __le__(self, *args, **kwargs): # real signature unknown        """ Return self<=value. """        """        判断是否小于等于             >>> (95).__le__(99)        True        >>> (95).__le__(9)        False        """        pass    def __lshift__(self, *args, **kwargs): # real signature unknown        """ Return self<
>> bin(95)        '0b1011111'        >>> a = (95).__lshift__(2)        >>> bin(a)        '0b101111100'         >>>         """        pass    def __lt__(self, *args, **kwargs): # real signature unknown        """ Return self
>> (95).__lt__(9)        False        >>> (95).__lt__(99)        True        """        pass    def __mod__(self, *args, **kwargs): # real signature unknown        """ Return self%value. """        """        取模 %        >>> (95).__mod__(9)        """        pass    def __mul__(self, *args, **kwargs): # real signature unknown        """ Return self*value. """        """        乘法 *        >>> (95).__mul__(10)        """        pass    def __neg__(self, *args, **kwargs): # real signature unknown        """ -self """        """        将正数变为负数,将负数变为正数        >>> (95).__neg__()        -95        >>> (-95).__neg__()        """        pass    @staticmethod # known case of __new__    def __new__(*args, **kwargs): # real signature unknown        """ Create and return a new object.  See help(type) for accurate signature. """        pass    def __ne__(self, *args, **kwargs): # real signature unknown        """ Return self!=value. """        """        不等于        >>> (95).__ne__(9)        True        >>> (95).__ne__(95)        False        """        pass    def __or__(self, *args, **kwargs): # real signature unknown        """ Return self|value. """        """        二进制或的关系,只要有一个为真,就为真        >>> a = 4        >>> b = 0        >>> a.__or__(b)     # a --> 00000100        b --> 00000000        >>> b = 1           # b --> 00000001        >>> a.__or__(b)        """        pass    def __pos__(self, *args, **kwargs): # real signature unknown        """ +self """        pass    def __pow__(self, *args, **kwargs): # real signature unknown        """ Return pow(self, value, mod). """        """        幂        >>> (2).__pow__(10)        """            pass    def __radd__(self, *args, **kwargs): # real signatre unknown        """ Return value+self. """        """        加法,将value放在前面        >>> a.__radd__(b)       # 相当于 b+a         """        pass    def __rand__(self, *args, **kwargs): # real signature unknown        """ Return value&self. """        """        二进制与的关系,两个都为真,才为真,有一个为假,就为假        """        pass    def __rdivmod__(self, *args, **kwargs): # real signature unknown        """ Return divmod(value, self). """        pass    def __repr__(self, *args, **kwargs): # real signature unknown        """ Return repr(self). """        pass    def __rfloordiv__(self, *args, **kwargs): # real signature unknown        """ Return value//self. """        pass    def __rlshift__(self, *args, **kwargs): # real signature unknown        """ Return value<
>self. """        pass    def __rshift__(self, *args, **kwargs): # real signature unknown        """ Return self>>value. """        pass    def __rsub__(self, *args, **kwargs): # real signature unknown        """ Return value-self. """        pass    def __rtruediv__(self, *args, **kwargs): # real signature unknown        """ Return value/self. """        pass    def __rxor__(self, *args, **kwargs): # real signature unknown        """ Return value^self. """        pass    def __sizeof__(self, *args, **kwargs): # real signature unknown        """ Returns size in memory, in bytes """        """        在内存中占多少个字节        >>> a = 95        >>> a.__sizeof__()        """        pass    def __str__(self, *args, **kwargs): # real signature unknown        """ Return str(self). """        """        将一个正数转为字符串        >>> a = 95         >>> a = a.__str__()        >>> print(type(a))        
        """        pass    def __sub__(self, *args, **kwargs): # real signature unknown        """ Return self-value. """        """        减法运算        >>> (95).__sub__(5)        """        pass    def __truediv__(self, *args, **kwargs): # real signature unknown        """ Return self/value. """        """        除法运算        >>> (95).__truediv__(5)        19.0        """        pass    def __trunc__(self, *args, **kwargs): # real signature unknown        """ Truncating an Integral returns itself. """        """        返回一个对象的整数部分        >>> (95.95).__trunc__()        """        pass    def __xor__(self, *args, **kwargs): # real signature unknown        """ Return self^value. """        """        将对象与值进行二进制的或运算,一个为真,就为真        >>> a = 4        >>> b = 1        >>> a.__xor__(b)        >>> c = 0        >>> a.__xor__(c)        """        pass    denominator = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default    """ 分母 = 1 """    """the denominator of a rational number in lowest terms"""    imag = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default    """ 虚数 """    """the imaginary part of a complex number"""    numerator = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default    """ 分子 = 数字大小 """    """the numerator of a rational number in lowest terms"""    real = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default    """ 实属 """    """the real part of a complex number"""int

2、布尔值

  真或假

  1 或 0

3、字符串

"Hello World!"

s = "nick" #索引print(s[0])print(s[1])print(s[2])print(s[3]) #长度ret = len(s)print(ret) #切片print(s[1:3])print(s.rsplit("ic")) #替换name = "Nick is good, Today is nice day."a = name.replace("good","man")print(a) #连接两个字符串li = ["nick","serven"]a = "".join(li)b = "_".join(li)print(a)print(b) #指定的分隔符将字符串进行分割a = s.rpartition("i")print(a) #分割,前,中,后三部分name = "Nick is good, Today is nice day."a = name.partition("good")print(a) #for循环for i in s:    print(i)for i in range(5):    print(i) # 反转s = 'ssssssssss111'print(s[::-1])  # 111ssssssssss

4、列表

 list = ['Google', 'baidu', 'taobao']

#在列表末尾添加新的对象list = ['Google', 'baidu', 'T']list.append('taobao')print(list)  #将指定对象插入列表list = ['Google', 'baidu', 'T','baidu']list.insert(1,"Nick")print(list)  #在列表末尾追加另一个序列中的多个值list = ['Google', 'baidu', 'T','baidu']list2 = ['nick','baidu']list.extend(list2)print(list)    #统计某个元素在列表中出现的次数list = ['Google', 'baidu', 'T','baidu']a = list.count('baidu')print(a)  #从列表中找出某个值第一个匹配项的索引位置list = ['Google', 'baidu', 'T','baidu']a = list.index('baidu')print(a)    #移除列表中的一个元素(默认最后一个元素)list = ['Google', 'baidu', 'T','baidu']list.pop()print(list)  #移除列表中某个值的第一个匹配项list = ['Google', 'baidu', 'T','baidu']list.remove('baidu')print(list)  #清空列表list = ['Google', 'baidu', 'T']list.clear()print(list) #删除指定索引位置list = ['Google', 'baidu', 'T','baidu']del list[2]print(list) list = ['Google', 'baidu', 'T','baidu']del list[1:3]    -->顾头不顾尾print(list)    #复制列表list = ['Google', 'baidu', 'T']list2 = list.copy()print(list2)  #对原列表进行排序list = ['Google', 'baidu', 'T','baidu']list.sort()print(list)  #反向列表中元素list = ['Google', 'baidu', 'T','baidu']list.reverse()print(list)

5、元组(不可修改)

name = ('nick','jenney')
#索引name = ('nick','jenney')a = name[0]print(a) #获取指定元素的索引位置name = ('nick','jenney')a = name.index('nick')print(a) #切片name = ('nick','jenney')a = name[0:1]print(a) #计算元素出现的个数name = ('nick','jenney')a = name.count('nick')print(a) #长度name = ('nick','jenney')a = len(name)print(a) #for循环name = ('nick','jenney')for i in name:    print(i)

6、字典(无序

user_info = {
   "name":"nick",    "age":18,    "job":"pythoner" }
user_info = {    "name":"nick",    "age":18,    "job":"pythoner"} #根据key获取值a = user_info.get("age")print(a)a = user_info.get("Age",19")print(a) #所有的key 列表a = user_info.keys()print(a) #所有的值,valuesa = user_info.values()print(a) #所有项的列表形式a = user_info.items()print(a)  #获取并在字典中移除user_info.pop('age')print(user_info) #随机并在字典中移除user_info.popitem()user_info.popitem()print(user_info) #清除内容a = user_info.clear()print(a)  #浅拷贝a = user_info.copy()print(a) #如果key不存在,则创建,如果存在,则返回已存在的值且不修改a = user_info.setdefault("age")print(a)user_info.setdefault("cool")print(user_info) #从序列键和值设置为value来创建一个新的字典a = dict.fromkeys(user_info)print(("new dict: %s") % str(a))  #更新(两个字典)user_info = {    "name":"nick",    "age":18,    "job":"pythoner"}user_info2 = {    "wage":800000000,    "drem":"The knife girl"}user_info.update(user_info2)print(user_info)

7、set集合(无序、不重复)

s = set()a = {'nick','jenny','suo'}
#添加元素a = {'nick','jenny','suo'}a.add('The knife girl')print(a) #更新a = {'nick','jenny','suo'}b = {'nick','jenny','The knife girl'}a.update(b)print(a)  #a中存在。b中不存在,赋给新值a = {'nick','jenny','suo'}b = {'nick','jenny','The knife girl'}set = a.difference(b)print(set) #a中存在。b中不存在,并更新aa = {'nick','jenny','suo'}b = {'nick','jenny','The knife girl'}a.difference_update(b)print(a) #交集,赋给新值a = {'nick','jenny','suo'}b = {'nick','jenny','The knife girl'}set = a.intersection(b)print(set) #交集,更新aa = {'nick','jenny','suo'}b = {'nick','jenny','The knife girl'}a.intersection_update(b)print(a) #对称交集a = {'nick','jenny','suo'}b = {'nick','jenny','The knife girl'}set = a.symmetric_difference(b)print(set) #对称交集,更新aa = {'nick','jenny','suo'}b = {'nick','jenny','The knife girl'}a.symmetric_difference_update(b)print(a) #并集,赋给新值a = {'nick','jenny','suo'}b = {'nick','jenny','The knife girl'}set = a.union(b)print(set) #如果没有交集,返回True,否则返回Falsea = {'nick','jenny','suo'}b = {'nick','jenny','The knife girl'}set = a.isdisjoint(b)print(set) #是否是子序列a = {'nick','jenny','suo'}b = {'nick','jenny'}set = a.issubset(b)print(set) #是否是父序列a = {'nick','jenny','suo'}b = {'nick','jenny'}set = a.issuperset(b)print(set)  #移除指定元素,不存在不报错a = {'nick','jenny','suo'}a.discard('suo')print(a) #移除指定元素,不存在则报错a = {'nick','jenny','suo'}a.remove('suo')print(a)a.remove('suo')print(a) #移除随机元素,并赋给新值a = {'nick','jenny','suo'}set = a.pop()print(set) #清空a = {'nick','jenny','suo'}a.clear()print(a)

其他

1、for循环

用户按照顺序循环可迭代对象中的内容

name = ('nick','jenney')for i in name:    print(i)

2、enumrate

为可迭代的对象添加序号

user_info = {    "name":"nick",    "age":18,    "job":"pythoner"}for k,v in enumerate(user_info,1):    print(k,v,user_info.get(v))

3、range和xrange

指定范围,生成指定的数字

range 前面小节已经说明了,range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。

xrange 用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器。

#python 2.7 版本print range(1, 10)# 结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]  print range(1, 10, 2)# 结果:[1, 3, 5, 7, 9]  print range(30, 0, -2)# 结果:[30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2]  #python 3.5 版本a = range(10)print(a)#结果:range(0, 10)
>>> a = xrange(10)>>> print axrange(10)>>> a = range(10)>>> a[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(0, 100):        print i     for i in xrange(0, 100):        print i

4、编码与进制转换

  • utf-8与gbk编码转换

  • 把自己名字用进制表示出来

name = "翁孟铠" a = bytes(name,encoding='utf-8')print(a)for i in a:    print(i,bin(i)) #输出结果(utf-8 三个字节表示一个汉字)b'\xe7\xb4\xa2\xe5\xae\x81'231 0b11100111180 0b10110100162 0b10100010229 0b11100101174 0b10101110129 0b10000001  b = bytes(name,encoding='gbk')print(b)for i in b:    print(i,bin(i)) #输出结果(gbk 两个字节表示一个汉字)b'\xcb\xf7\xc4\xfe'203 0b11001011247 0b11110111196 0b11000100254 0b11111110