Python之路(三):基本数据类型(下)

元祖tuple

   是对列表的二次加工,书写格式为括号(),里面放元素

   元组的一级元素不可被修改,且不能被增加和删除

   一般写元组的时候,推荐在最后加入逗号,   能加则加

创建元组

1
tu  =  ( 111 , "alex" ,( 11 , 22 ),[( 33 , 44 )], True , 33 , 44 ,)

索引

1
2
3
tu  =  ( 111 , "alex" ,( 11 , 22 ),[( 33 , 44 )], True , 33 , 44 ,)     # 索引找值
=  tu[ 1 ]
print (v)<br><br>alex

切片

1
2
3
tu  =  ( 111 , "alex" ,( 11 , 22 ),[( 33 , 44 )], True , 33 , 44 ,)     # 切片,区间内找值
=  tu[ 0 : 3 ]
print (v)<br><br>( 111 'alex' , ( 11 22 ))

可以被for循环(可迭代对象)

1
2
3
4
5
6
7
8
9
10
tu  =  ( 111 , "alex" ,( 11 , 22 ),[( 33 , 44 )], True , 33 , 44 ,)
for  item  in  tu:
     print (item)
 
111
alex
( 11 , 22 )
[( 33 , 44 )]
True
44

有序的,排列的时候有顺序

  • 转换(字符串,列表,元祖之间的转换)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
=  "asd"
li  =  [ "asdf" , 123 ]
tu  =  ( 123 , 321 , "asdf" )
=  tuple (s)
print (v)
v1  =  tuple (li)
print (v1)
v2  =  list (tu)
print (v2)
 
# 输出结果
( 'a' 's' 'd' )
( 'asdf' 123 )
[ 123 321 'asdf' ]

元组运算符

与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。

Python 表达式 结果 描述
len((1, 2, 3)) 3 计算元素个数
(1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 连接
('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') 复制
3 in (1, 2, 3) True 元素是否存在
for x in (1, 2, 3): print x, 1 2 3 迭代

tuple的方法(魔法)

序号 方法及描述 实例
1 len(tuple)
计算元组元素个数。
>>> tuple1 = ('Google', 'Baidu', 'Taobao') >>> len(tuple1) 3 >>>
2 max(tuple)
返回元组中元素最大值。
>>> tuple2 = ('5', '4', '8') >>> max(tuple2) '8' >>>
3 min(tuple)
返回元组中元素最小值。
>>> tuple2 = ('5', '4', '8') >>> min(tuple2) '4' >>>
4 tuple(seq)
将列表转换为元组。
>>> list1= ['Google', 'Taobao', 'JD', 'Baidu'] >>> tuple1=tuple(list1) >>> tuple1 ('Google', 'Taobao', 'Runoob', 'Baidu')

     

字典dict

是一个键(key)值(value)对,结构为{},大括号

创建字典

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
info  =  {                 # k1 k2 k3 k4为键                      
     "k1" 18 ,              # :后面分别为值    逗号为分隔符
     "k2" True ,                      # 数字,布尔值也可以作为键
     "k3" : [
         11 ,
         [],
         (),
         22 ,
         33 ,
         {
             'kk1' 'vv1' ,
             'kk2' 'vv2' ,
             'kk3' : ( 11 , 22 ),
         }
     ],
     "k4" : ( 11 , 22 , 33 , 44 )
 
}

字典的值可以是任何值

  • 列表,字典不能作为字典的key
  • 字典是无序的
  • 字典不能被切片,因为它是无序的;可根据索引取值,查找,找到元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
info  =  {
     "k1" 18 ,
     "k2" True ,
     "k3" : [
         11 ,
         [],
         (),
         22 ,
         33 ,
         {
             'kk1' 'vv1' ,
             'kk2' 'vv2' ,
             'kk3' : ( 11 , 22 ),
         }
     ],
     "k4" : ( 11 , 22 , 33 , 44 )
 
}
=  info[ 'k1' ]
print (v)
 
18

字典是支持del 删除的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
info  =  {
     "k1" 18 ,
     "k2" True ,
     "k3" : [
         11 ,
         [],
         (),
         22 ,
         33 ,
         {
             'kk1' 'vv1' ,
             'kk2' 'vv2' ,
             'kk3' : ( 11 , 22 ),
         }
     ],
     "k4" : ( 11 , 22 , 33 , 44 )
 
}
del  info[ 'k1' ]
print (info)
 
 
$ { 'k4' : ( 11 22 33 44 ),  'k3' : [ 11 , [], (),  22 33 , { 'kk1' 'vv1' 'kk3' : ( 11 22 ),  'kk2' 'vv2' }],  'k2' True }

支持for循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
info  =  {
     "k1" 18 ,
     "k2" True ,
     "k3" : [
         11 ,
         [],
         (),
         22 ,
         33 ,
         {
             'kk1' 'vv1' ,
             'kk2' 'vv2' ,
             'kk3' : ( 11 , 22 ),
         }
     ],
     "k4" : ( 11 , 22 , 33 , 44 )
 
}
for  item  in  info:
     print (item)
 
 
$ k4
$ k2         info是字典类型
$ k1           默认 for 循环只有key
$ k3                但是输出结果键每次排序都不同,因为字典是无序的

用for循环获取值values

1
2
3
4
5
6
7
8
9
代码接上
for  item  in  info.values():
     print (item)
 
 
$ ( 11 22 33 44 )
$ [ 11 , [], (),  22 33 , { 'kk3' : ( 11 22 ),  'kk2' 'vv2' 'kk1' 'vv1' }]
True
18                           

既想获取key又想获取value则用items

1
2
3
4
5
6
7
8
9
代码接上
for  item  in  info.items():
     print (item)
 
                                      # keys和values都可以获得
$ ( 'k1' 18 )
$ ( 'k4' , ( 11 22 33 44 ))
$ ( 'k2' True )
$ ( 'k3' , [ 11 , [], (),  22 33 , { 'kk2' 'vv2' 'kk3' : ( 11 22 ),  'kk1' 'vv1' }])                   

字典的方法(魔法)

序号 函数及描述
1 dict.clear()
删除字典内所有元素
2 dict.copy()
返回一个字典的浅复制
3 dict.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4 dict.get(key, default=None)
返回指定键的值,如果值不在字典中返回default值
5 key in dict
如果键在字典dict里返回true,否则返回false
6 dict.items()
以列表返回可遍历的(键, 值) 元组数组
7 dict.keys()
以列表返回一个字典所有的键
8 dict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9 dict.update({'k1':'v1'} OR k1=v1)
把字典dict2的键/值对更新到dict里
10 dict.values()
以列表返回字典中的所有值
11

dict.popitem()

随机删除,并获取删除的键值以元组形式返回

集合set

基本数据类型特点(可变:列表,字典   不可变:字符串,数字,元组)

  • 不同的元素组成
  • 无序
  • 集合中的元素必须是不可变类型,加入可变的类型会报错
复制代码
#!/usr/bin/python3
 
student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
 
print(student)   # 输出集合,重复的元素被自动去掉
 
# 成员测试
if('Rose' in student) :
    print('Rose 在集合中')
else :
    print('Rose 不在集合中')
 
 
# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
 
print(a)
 
print(a - b)     # a和b的差集
 
print(a | b)     # a和b的并集
 
print(a & b)     # a和b的交集
 
print(a ^ b)     # a和b中不同时存在的元素
复制代码

方法:

  A、add  添加,添加可变的数据类型也是会报错的

1
2
3
=  { 1 , 2 , 5 , 5 , 'g' , 'h' }
s.add( 3 )
print (s)

  执行结果

1
{ 1 2 3 5 'h' 'g' }

  B、clear   清空集合

  C、intersection  交集,相当于&

1
2
3
4
5
6
7
=  { 1 , 7 , 9 }
s1  =  { 1 , 9 , 5 }
print (s&s1)
print (s.intersection(s1))
 
{ 9 1 }
{ 9 1 }

   D、union  并集,相当于 |

1
2
3
4
=  { 1 , 7 , 9 }
s1  =  { 1 , 9 , 5 }
print (s|s1)
print (s.union(s1))<br><br>{ 1 , 5 , 7 , 9 }<br>{ 1 , 5 , 7 , 9 }

  E、difference  差集,相当于-

1
2
3
4
5
6
7
=  { 1 , 7 , 9 }
s1  =  { 1 , 9 , 5 }
print (s - s1)
print (s.difference(s1))
 
{ 7 }
{ 7 }

  F、symmetric_difference  交叉补集,相当于^

1
2
3
4
5
6
7
=  { 1 , 7 , 9 }
s1  =  { 1 , 9 , 5 }
print (s^s1)
print (s.symmetric_difference(s1))
 
{ 5 7 }
{ 5 7 }

  G、difference-update   差集更新

  H、isdisjoint        判断是否有交集

  I、issubset        判断是否为子集

1
2
3
4
5
6
7
s1 = { 1 , 2 }
s2 = { 1 , 2 , 3 }
print (s1.issubset(s2))
print (s2.issubset(s1))
 
True
False

  J、issuperset       判断是否为父集

1
2
3
4
5
s1 = { 1 , 2 }
s2 = { 1 , 2 , 3 }
print (s2.issuperset(s1))
 
True

  k、update  更新多个值,可迭代都可传

  L、pop,remove,discard  均为删除

1
2
3
4
5
6
7
8
9
=  { 9 'sb' 1 2 3 4 5 6 }
s.pop()                            # pop不能指定删除,只可以随机删除
print (s)
=  { 9 'sb' 1 2 3 4 5 6 }   # 指定删除元素,当删除的元素不存在时,删除会报错
s.remove( 4 )
print (s)
=  { 9 'sb' 1 2 3 4 5 6 }
s.discard( 5 )
print (s)                           # 指定元素删除;和remove唯一的区别删除不存在不会报错

猜你喜欢

转载自www.cnblogs.com/Miracle-boy/p/9968365.html