微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > 编程语言 > 脚本语言 >

3、python基础

时间:2016-05-07 10:33  浏览:努力统计中...
一、基本数据类型补充 set是一个无序而且不重复的集合,有些类似于数学中的集合,也可以求交集,求并集等,下面从代码里来看一下set的用法,如果对这些用法不太熟悉的话,可以照

一、基本数据类型补充

  set是一个无序而且不重复的集合,有些类似于数学中的集合,也可以求交集,求并集等,下面从代码里来看一下set的用法,如果对这些用法不太熟悉的话,可以照着下面的代码敲一遍。

s1={1,2,3,1}                #定义一个set s1 如果s1={}为空则默认定义一个字典s2=set([2,5,6])             #定义一个set s2print(s1)                   #s1={1,2,3} 自动去除重复的元素s1.add(5)                   #s1={1,2,3,5} 添加一个元素print(s1)s3=s1.difference(s2)        #返回一个s1中存在而不存在于s2的字典s3,s3={1,3},而s1并没有改变print(s3)s1.difference_update(s2)    #s1跟新成上面的s3 s1={1,3}s1.discard(1)               #删除元素1,不存在的话不报错  s1={3}print(s1)s1.remove(3)                #删除元素3,不存在的话报错    s1={}print(s1)s1.update([11,2,3])         #跟新s1中的元素,其实是添加   s1={11,2,3}print(s1)k=s1.pop()                  #删除一个元素,并将删除的元素返回给一个变量,无序的,所以并不知道删除谁                  s1={1,2,3,4}          #这里重新定义了集合s1,s2s2={3,4,5,6}r1=s1.intersection(s2)       #取交集,并将结果返回给一个新的集合 r1={3,4}print(r1)print(s1)s1.intersection_update(s2)   #取交集,并将s1更新为取交集后的结果 s1={3,4}print(s1)k1=s1.issubset(s2)           #s1是否是s2的的子序列是的话返回True,否则False 这里k1=trueprint(k1)k2=s1.issuperset(s2)         #s1是否是s2的父序列 k2=Falsek3=s2.isdisjoint(s1)         #s1,s2,是否有交集,有的话返回False,没有的话返回Trueprint(k3)s1.update([1,2])             #s1={1,2,3,4}r3=s1.union(s2)              #取并集将结果返回给r3 r3={1,2,3,4,5,6}print(r3)r2=s1.symmetric_difference(s2)          #r2=s1并s2-s1交s2  r2={1,2,5,6}print(r2)s1.symmetric_difference_update(s2)      #s1更新为 s1并s2 - s1交s2   s1={1,2,5,6}print(s1)

二、三目运算符  

  三目运算符可以简化条件语句的缩写,可以使代码看起来更加简洁,三目可以简单的理解为有三个变量,它的形式是这样的 name= k1 if 条件 else k2 ,如果条件成立,则 name=k1,否则name=k2,下面从代码里面来加深一下理解,从下面的代码明显可以看出三目运算符可以使代码更加简洁。

a=1b=2if a<b:                     #一般条件语句的写法    k=aelse:    k=b    c=a if a<b else b         #三目运算符的写法 

三、深拷贝浅拷贝

  拷贝意味着对数据重新复制一份,对于拷贝有两种深拷贝,浅拷贝两种拷贝,不同的拷贝有不同的效果。拷贝操作对于基本数据结构需要分两类进行考虑,一类是字符串和数字,另一类是列表、字典等。如果要进行拷贝的操作话,要import copy。

1、数字和字符串  

  对于数字和字符串而言,深拷贝,浅拷贝没有什么区别,因为对于数字数字和字符串一旦创建便不能被修改,假如对于字符串进行替代操作,只会在内存中重新生产一个字符串,而对于原字符串,并没有改变,基于这点,深拷贝和浅拷贝对于数字和字符串没有什么区别,下面从代码里面说明这一点。

import copys='abc'print(s.replace('c','222'))         # 打印出 ab222print(s)                            # s='abc' s并没有被修改s1=copy.deepcopy(s)s2=copy.copy(s)#可以看出下面的值和地址都一样,所以对于字符串和数字,深浅拷贝不一样,数字和字符串一样就不演示了,大家可以去试一下print(s,id(s2))                     # abc 1995006649768print(s1,id(s2))                    # abc 1995006649768print(s2,id(s2))                    # abc 1995006649768

2、字典、列表等数据结构  

对于字典、列表等数据结构,深拷贝和浅拷贝有区别,从字面上来说,可以看出深拷贝可以完全拷贝,浅拷贝则没有完全拷贝,下面先从内存地址分别来说明,假设 n1 = {"k1""wu""k2"123"k3": ["alex"456]}

        浅拷贝在内存中只额外创建第一层数据                 深拷贝在内存中将所有的数据重新创建一份

TAG:
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线------
栏目列表
推荐内容