设为首页 收藏本站
查看: 526|回复: 0

[经验分享] 二Python内置数据类型

[复制链接]

尚未签到

发表于 2017-4-28 09:15:53 | 显示全部楼层 |阅读模式
一. 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
   
   
   
   
   

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-370200-1-1.html 上篇帖子: Python基础 6 ---- Python 元组+列表+字典+文件 下篇帖子: 补发:澄清Python的Open class
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表