zoukankan      html  css  js  c++  java
  • python学习笔记一:数据类型

    一、Python文件类型

    1、源代码

    hello.py:

    1 #!/usr/bin/python
    2 print "hello world"

    2、字节代码:python源文件经编译后生成的扩展名为“pyc”的文件

    编译方法(compile.py):

    import py_compile
    py_compile.compile('hello.py')

    然后执行:

    $ python compile.py

    会生成二进制的 hello.pyc 文件

    3、优化代码:经过优化的源文件,扩展名为 pyo

    在命令行下执行下面的命令优化:

    $ python -O -m py_compile hello.py

    二、python 变量

     python变量赋值(可变与不可变)

    三、python运算符

    1、整数除法 // 

    即只取结果中的整数部分:

    >>> 3.0 // 2
    1.0
    >>> 3 // 2
    1

    2、求幂运算 **

    >>>3**3
    27
    >>>3**2
    9

    3、逻辑与、逻辑或、逻辑非

    >>> 1>2 and 3>2
    False
    >>> 2>1 and 3>2
    True
    
    >>>1>2 or 3>2
    True
    >>>1>2 or 1>3
    False
    
    >>> not 1>2
    True
    >>> not 2>1
    False

    4、运算符优先级:

    四、python 数据类型

    1、数字:分整型、长整型、浮点、复数

    其中复数(用j表示):

    >>> a=3.14j
    >>> type(a)
    <type 'complex'>
    >>> 

    2、字符串:单双引号一样

    >>> str1="a"
    >>> str2='a'
    >>> id(str1)
    140710100204544
    >>> id(str2)
    140710100204544
    >>> mail="""tom:
    ...     i am jack
    ...     goodbye
    ... """
    >>> print mail
    tom:
        i am jack
        goodbye
    
    >>> 

    切片[start:stop:step]

    即:[开始索引:结束索引:步长值]

    开始索引:同其它语言一样,从0开始。序列从左向右方向中,第一个值的索引为0,最后一个为-1

    结束索引:切片操作符将取到该索引为止,不包含该索引的值。

    步长值:默认是一个接着一个切取,如果为2,则表示进行隔一取一操作。步长值为正时表示从左向右取,如果为负,则表示从右向左取。步长值不能为0

    注明:如果是string[ : ]的模式,那么就是[start:stop]

    示例:

    >>>exam="abcdefghi"  
    >>>print exam[:-1]
    abcdefgh  
    >>>print exam[2:]
    cdefghi  
    >>>print exam[:7:2]
    aceg  
    >>>print exam[:3:-1]
    ihgfe

    注意:最后一行,因为第三个参数是-1,所以是倒序输出的,但是此时的索引并没有倒序排列

    3、列表:处理一组有序项目的数据结构,是可变类型数据,用[]表示,包括了多个以逗号隔开的项目。

    >>> l=['jim',25,'male']
    >>> l
    ['jim', 25, 'male']
    >>> type(l)
    <type 'list'>
    >>> l[0]
    'jim'
    >>> l[0]='tom'
    >>> l[0]
    'tom'
    >>> l
    ['tom', 25, 'male']

    空列表:

    >>>l=[]

    只有一个值:

    >>>l=['abc']

    列表常用方法:

    取值:list[index] 或者 list[start:end:offset]

    追加:list.append(x);

    追加列表:list.extend([x,y]);结果为[...,x,y],注意跟append的区别

    删除:del(list[index]) 或者 list.remove(list[index])

    修改:list[index]=x

    查找:var in list

    >>>l=['a',1]
    >>>'a' in l
    True
    >>>'b' in l
    False

    4、元组:跟列表类似,只是跟字符串一样是不可变的,即你不能修改元组(只能在内存中重新创建一个)。

    • 元组通过圆括号中用逗号分隔的项目定义
    • 元组通常用在使语句或用户定义的函数能够安全地采用一组值的时候,即被用的元组的值不会改变
    >>>userinfo=("tom", 30, "man")
    >>>userinfo[0]
    "tom"

    空元组:

    >>>t=()

    单一元素的元组:

    >>>t=(1,)

    注意,不能省略逗号

    用变量接收元组:

    >>> t
    ('jim', 25, 'man')
    >>> name,age,gender=t
    >>> name
    'jim'
    >>> age
    25
    >>> gender
    'man'
    
    >>>a,b,c=(1,2,3)
    >>>a
    1
    >>>b
    2
    >>>c
    3

    5、字典:python中唯一的映射类型(哈希表)

    创建方式:

    (1){}

    >>>dic={0:0,'a':'abc'}
    >>>dic[0]
    0
    >>>dic['a']
    'abc'

    (2)使用工厂方法dict()

    >>> fdict=dict([('x',1),('y',2)])
    >>> fdict
    {'y': 2, 'x': 1}

    (3)fromkeys():字典中的元素具有相同的值,默认为None

    >>> d={}.fromkeys(('x','y',0), -1)
    >>> d
    {'y': -1, 'x': -1, 0: -1}

    字典常用方法:

    (1)、使用键值访问更新

    (2)、del dict1['a']删除字典中键值为a的元素

    (3)、dict1.pop('a') 删除并返回键为'a'的元素

    (4)、dict1.clear()删除字典所有元素

    (5)、del dict1 删除整个字典

    (6)、str(dict1) 转换为字符串

    (7)、get(key[, msg]) 如果key不存在返回msg(没有为空)值

    (8)、dict1.items() 返回键值对元组的列表

    >>> d
    {'a': 1, 'b': 2}
    >>> d.items()
    [('a', 1), ('b', 2)]

    (9)、dict1.keys() 返回字典中键的列表

    >>> d
    {'a': 1, 'b': 2}
    >>> d.keys()
    ['a', 'b']

    (10)、dict1.setdefault(key,default=None) 若key存在则返回其value,否则dict1[key]=default

    (11)、dict1.update(dict2) 将dict2中的键值对添加到字典dict1中,如果有重复就覆盖,否则添加。

    (12)、len(dict1) 返回字典中有多少项

    >>> d
    {'a': 1, 'b': 2}
    >>> len(d)
    2

    6、序列:列表、字符串、元组都是序列

    切片:序列后跟一个方括号,方括号中有一对用冒号隔开的可选数字,数字是可选的,冒号是必须的。如:

    >>>exam="abcdefghi"  
    >>>print exam[:-1]
    abcdefgh  
    >>>print exam[2:]
    cdefghi  
    >>>print exam[:7:2]
    aceg  
    >>>print exam[:3:-1]
    ihgfe

    索引:序列后跟一个方括号,方括号中有一个数字(可以是负数)。如:

    >>>exam="abcdefghi"  
    >>>print exam[0]
    a

    五、序列基本操作

    1、len:序列长度

    >>>exam="abc"  
    >>>len(exam)
    3

    2、+:连接两个序列

    >>>str1="abc"  
    >>>str2="d"
    >>>str1+str2
    abcd

    3、*:重复序列元素

    >>>str1="abc "  
    >>>str1*3
    abc abc abc

    4、in:判断元素是否在序列中

    >>>str1="abc "  
    >>>'c' in str1
    True
    >>>'x' in str1
    False

    5、max:返回最大值

    >>>s='12345'
    >>>max(s)
    '5'

    6、min:返回最小值

    >>>s='12345'
    >>>min(s)
    '1'

    7、cmp(tuple1, tuple2):比较两个序列值是否相同

    >>>str1='abc'
    >>>str2='123'
    >>>cmp(str1,str2)
    1
    
    >>>str1='1'
    >>>cmp(str1,str2)
    -1
    
    >>>str1='123'
    >>>cmp(str1,str2)
    0

    六、

  • 相关阅读:
    SPOJ GSS4 Can you answer these queries IV ——树状数组 并查集
    SPOJ GSS3 Can you answer these queries III ——线段树
    SPOJ GSS2 Can you answer these queries II ——线段树
    SPOJ GSS1 Can you answer these queries I ——线段树
    BZOJ 2178 圆的面积并 ——Simpson积分
    SPOJ CIRU The area of the union of circles ——Simpson积分
    HDU 1724 Ellipse ——Simpson积分
    HDU 1071 The area ——微积分
    HDU 4609 3-idiots ——FFT
    BZOJ 2194 快速傅立叶之二 ——FFT
  • 原文地址:https://www.cnblogs.com/lurenjiashuo/p/python-note-datatype.html
Copyright © 2011-2022 走看看