`

二Python内置数据类型

阅读更多

一. dictionary

    dictionary是Python的内置数据类型之一,它定义了键值之间的一对一的关系。类似于perl中的hash,java中的HashMap。

 

    定义一个dictionary

#-------------------------------------------------------------------------------
# Name:        DictionaryTest
# Purpose:
#   Dictionary 是 Python 的内置数据类型之一,它定义了键和值间的一一对应关系
# Author:      zdk
#
# Created:     01/02/2013
# Copyright:   (c) zdk 2013
# Licence:     <your licence>
#-------------------------------------------------------------------------------

if __name__ == '__main__':
    #定义一个dictionary
    d = {"name":"zdk","age":18}
    print("the dictionary is :", d)
    #获取一个key对应的value
    print("the key is name and the value is:",d["name"])

    (1)首先我们创建了新的dictionary,它有2个元素,将变量赋值为d。每个元素都是一个key-value对;整个元素集合用大括号括起来。

    (2)name是一个key,它所关联的值通过d["name"]来引用。

    (3)当引用的key在d中不存在时会引发异常。

    (4)dictionary是无序的。

 

    dictionary的修改 

   #添加一个新的key-value键值对
    d["gender"] = "man";
    print("the new dictionary is :", d)
    #覆盖已存在的key的value值
    d["gender"] = "superMan";
    print("the new dictionary is :", d)
    #dictionary的key是大小写敏感的
    d["GENDER"] = "SuperMan";
    print("the new dictionary is :", d)

    (1)在任何时候都可以加入新的key-value对

    (2)在一个dictionary中不能有重复的key,给一个存在的key赋值会覆盖原来的值  

    (3)dictionary得key是大小写敏感的。

 

    从dictionary中删除元素  

    #删除元素
    del d["GENDER"]
    print("the  dictionary is :", d)
    d.clear();
    print("after all clear,the  dictionary is :", d)

    (1)del允许使用key从一个dictionary中删除独立的元素

    (2)clear从一个dictionary中清除所有元素,留下空的大括号。

 

 

二. list

    list是python中使用最频繁的数据类型,类似于perl中的数组或java中的ArrayList

    

#-------------------------------------------------------------------------------
# Name:        ListTest
# Purpose:
#   list是python中使用最频繁的数据类型,类似于perl中的数组或java中的ArrayList
# Author:      zdk
#
# Created:     01/02/2013
# Copyright:   (c) zdk 2013
# Licence:     <your licence>
#-------------------------------------------------------------------------------

if __name__ == '__main__':
    #定义一个list
    li = ["a", "b", "mpilgrim", "z", "example"]
    print(li)
    print(li[0])
    print(li[4])
运行结果 
['a', 'b', 'mpilgrim', 'z', 'example']
a
example

  

(1)首先我们定义了一个有5个元素的list。注意它们保持着初始的顺序,这不是偶然,list是一个用方括号包括起来的有序元素集合。

(2)list可以作为以0为下标开始的数组。任何非空list的第一个元素的下标总是0

(3)这个包含5个元素list的最后一个元素是li[4],因为列表总是从0开始。

 

    负的list索引和分片 

  #负的list索引
    print("li is: ",li)
    print("li[-1] is: ", li[-1])
    print("li[-3] is: ",li[-3])
    #list分片
    print("li[1:3] is: ",li[1:3])
    print("li[1:-1] is: ",li[1:-1])
    print("li[0:3] is: ",li[0:3])

 

运行结果 
li is: ['a', 'b', 'mpilgrim', 'z', 'example']
li[-1] is: example
li[-3] is: mpilgrim
li[1:3] is: ['b', 'mpilgrim']
li[1:-1] is: ['b', 'mpilgrim', 'z']
li[0:3] is: ['a', 'b', 'mpilgrim']

 (1)负数索引从list的尾部开始向前计数来存取元素。任何一个非空list最后一个元素总是li[-1]。

 (2)如果负数索引使你感到迷惑,可以这样理解:li[-n]==li[len[li]-n]。所以在这个list里,li[-3]==li[5-3]==li[2]。

 (3)你可以通过指定2个索引得到一个list的子集。

 (4)第一个索引指定了你想要的第一个元素,第二个索引指定了第一个你不想要的元素。

 

    分片的简写

 #分片的简写
    print("li[:3] is: ",li[:3])
    print("li[1:] is: ",li[1:])
    print("li[:] is: ",li[:])
运行结果 
li[:3] is: ['a', 'b', 'mpilgrim']
li[1:] is: ['b', 'mpilgrim', 'z', 'example']
li[:] is: ['a', 'b', 'mpilgrim', 'z', 'example']

 (1)如果左侧索引为空,则默认为0,如果右侧索引为空,则默认为list的长度。

 

    向list中增加元素 

#向list中增加元素
    print("before li.append(\"new\") is: ",li[:])
    li.append("new")
    print("after li.append(\"new\") is: ",li[:])
    li.insert(2,"new")
    print("after li.insert(2,\"new\") is: ",li[:])
    li.extend(["two","elements"])
    print("after li.extend([\"two\",\"elements\"]) is: ",li[:])

 

运行结果
before li.append("new") is: ['a', 'b', 'mpilgrim', 'z', 'example']
after li.append("new") is: ['a', 'b', 'mpilgrim', 'z', 'example', 'new']
after li.insert(2,"new") is: ['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new']
after li.extend(["two","elements"]) is: ['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']

 (1)append向list末尾增加一个元素

 (2)insert向指定索引增加一个元素

 (3)extend连接2个list

 

三. tuple

    tuple是不可变的list,一旦创建就不能以任何方式改变它

    

#-------------------------------------------------------------------------------
# coding:        utf-8
# Name:          TupleTest
# Purpose:      tuple是不可变的list,一旦创建就不能以任何方式改变它。
#
# Author:      zdk
#
# Created:     04/02/2013
# Copyright:   (c) zdk 2013
#-------------------------------------------------------------------------------

def main():
    #定义一个tuple
    t = ["a", "b", "mpilgrim", "z", "example"]
    print(t)
    print(t[0])
    print(t[-1])
    print(t[1:3])
    #tuple没有方法,不可以根据下标遍历,可以使用in检查某元素是否在tuple中
    print("a" in t)

if __name__ == '__main__':
    main()

    

运行结果
['a', 'b', 'mpilgrim', 'z', 'example']
a
example
['b', 'mpilgrim']
True

 (1)tuple比list操作速度快

 (2)如果对不需要修改的数据进行“写保护”

 (3)tuple可以是dictionary的key,list不行

 (4)tuple可以用在字符串格式化中,后面将会看到。

 

四. 汇总

    一条命令可以使用“\”作为续行符

   python的变量必须先赋值再使用,不然会抛异常

 

   一次多赋值

       v=('a','b','c')

        (x,y,z)=v

   v是一个三元素的tuple,并且(x,y,z)是一个三变量的tuple

     

    连续赋值: 

range(7)  #[0,1,2,3,4,5,6]
(MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)
MONDAY  #0
TUESDAY #1

 字符串格式化

print("%s=%s" %(t[0],t[1]))

 (t[0],t[1])是一个tuple,+只拼接字符串,格式化输出类型与C语言的printf可以有%d,%f等,当时一个元素的tuple时,必须增加一个",",如print("%s" %(t[0],))

 

list映射

    li = [1, 9, 8, 4]
    print([elem*2 for elem in li])
    print(li)
    li=[elem*2 for elem in li];
    print(li)

 

运行结果
[2, 18, 16, 8]
[1, 9, 8, 4]
[2, 18, 16, 8]

 (1)循环遍历li,对每一个elem*2后追加到新的list中

 (2)elem*2不影响原来的list

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics