基本数据类型操作

一、标准数据类型

在Python3x中,有6个标准数据类型,分别为数字(Number)、字符串(String)、列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)

不可变得数据类型:数字(Number)、字符串(String)、元组(Tuple)

可变数据类型:列表(List)、字典(Dictionary)、集合(set)

不可哈希的数据:列表(List)、字典(Dictionary)

  1. Python3x中支持int、 float、bool、complex(复数)

          可以通过type()和isinstance()来判断数据类型:

          (1)type()不会认为子类是一种父类类型

          (2)isinstance()会认为子类是一种父类类型

>>> class A:
	pass

>>> class B(A):
	pass

>>> type(A()) == A
True
>>> isinstance(A(),A)
True
>>> type(B()) == A
False
>>> isinstance(B(),A)
True
>>> 
  • 整形(int)

       可以通过isdigit()来判断字符串是否由数字组成

str = '99'
if str.isdigit():
    print(int(str))
  • 字符串类型(string)

        可以通过isalpha()来方判断字符串是否只由字母组成

        可以通过isalnum()判断字符串是由数字和字母组成

字符串需要掌握的操作
1、strip lstrip rstrip  去两边的空格,去左边的空格,去右边的空格
2、lower upper  全转为小写,全转为大写
3、 startswith   endswith  字符串以什么开头  字符串以什么结尾
4、split   将字符串按照分割符分成一个列表
>>> name='C:/a/b/c/d.txt'
>>> print(name.split('/',1))
['C:', 'a/b/c/d.txt']
>>> 
5、rsplit   从右边开始分割
>>> name='a|b|c'
>>> print(name.rsplit('|',1))
['a|b', 'c']
>>> 
6、join 
>>> tag=' '
>>> print(tag.join(['egon','say','hello','world']))   #可迭代对象必须都是字符串
egon say hello world
>>> 
7、replace
>>> name='alex say :i have one tesla,my name is alex'
>>> print(name.replace('alex','SB',1))
SB say :i have one tesla,my name is alex
  •  浮点型(float)

       可以通过float()将由纯数字组成的字符串转换为浮点型

  •  元组(tuple)

       元组可以看成是一个不可变的列表(可以当做字典的key),只读

      

name = ('alex','egon','tank','surpass')

需要掌握的知识点:
1、按索引来取值(正向取,反向取)
2、切片(【1:3)开区间),步长
3、成员运算:in   not in

       元组练习题:

      

实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用户重新输入

msg_dic={
'apple':10,
'tesla':100000,
'mac':3000,
'lenovo':30000,
'chicken':10,
} 
  • 列表(List)

      

user_info = ['alex','male',18]

列表需要掌握的操作

1、按照索引去存取值(正向取+反向取):即可以存也可以取
2、切片操作(【1:3)),按步长
3、成员运算:in     not in
4、追加   list.append()
5、删除   del list[index]
6、循环 
7、列表推导式    list = [i for i in range(1,10) if i%2 == 0] 
注意:空列表不能按照索引添加值,而应使用append()
  •  字典(dictionary)

       字典是通过key-value来存取值, key是不可变数据类型,且是唯一的

     

字典需要掌握的操作:
1、按照key存取值,可取可存
2、长度len
3、成员运算 in     not in
4、删除   del dict['name']
5、keys(),values(),items()
6、循环


一个字典的实例:  
user_dict = {'name':'alex','age':18,'sex':'male'}

字典删除:
1、del   del user_dict['name']
2、pop  user_dict.pop('name')
3、popitem  随机删除   user_dict.popitem()

字典取值:
1、user_dict['name']       alex
2、user_dict.get('name')    推荐用get来取值,若键不存在不会抛异常,而会返回一个None

clear():清除字典中的所有元素

       直接引用、浅拷贝、深拷贝三者的区别:

      这三者的区别:值传递、引用传递

   

直接引用是引用(地址)传递,修改旧的或者新的都会影响另外一个,牵一发而动全身。

使用列表的copy方法或者使用copy模块的copy()方法,仅仅开辟一块新的内存空间,将原列表的第一层元素复制一份新的,而列表内的嵌套不会复制,仅仅是引用了内层列表的地址,属于空有其表(因为内层的无论通过新列表还是旧列表都能修改)

使用deepcoopy()方法拷贝列表,不仅开辟新空间,而且还将原列表的所有的元素都复制一份,无论原列表内是否存在嵌套的列表,属于形神具备(因为内层的列表元素不再是通过引用,而是真真正正的复制了一份新的)


注意:对于数字和字符串,赋值、浅拷贝和深拷贝的值都指向同一个内存地址

      通过fromkeys创建新的字典

Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值
dict.fromkeys(seq[, value])

首先创建一个用来存字典键的列表

lst = ['name','age','sex']
dict_obj = dict.fromkeys(lst,[])

>> dict_obj = {'name':[],'age':[],'sex':[]}

dict_obj['name'].append('alex')

>> dict_obj = {'name':['alex'],'age':['alex'],'sex':['alex']}

print("dict_obj['name']:{}\ndict_obj['age']:{}\ndict_obj['sex']:{}".format(id(dict_obj['name']),id(dict_obj['age']),id(dict_obj['sex'])))
# dict_obj['name']:1714986428808
# dict_obj['age']:1714986428808
# dict_obj['sex']:1714986428808

    python3字典的keys()方法会返回一个迭代器,可以用list()将其转换为列表

>>> dict_1 = {'name':'egon','age':18,'sex':'male'}
>>> dict_1.keys()
dict_keys(['name', 'age', 'sex'])
>>> list_1 = list(dict_1.keys())
>>> print(list_1)
['name', 'age', 'sex']
>>> 

   Python3字典的setdefault()方法和get()方法相似,如果键不存在字典中,会添加键并将值设为 default

setdefault()方法语法:
dict.setdefault(key, default=None)
>>> dict_1 = {'name':'alex','age':18}
>>> dict_1.setdefault('sex','male')
'male'
>>> print(dict_1)
{'name': 'alex', 'age': 18, 'sex': 'male'}
>>> 

    Python3中的update()方法把dict2的键值对更新到 dict中

>>> dict = {'Name': 'Zara', 'Age': 7}
>>> dict2 = {'Sex': 'female' }
>>> dict.update(dict2)
>>> print(dict)
{'Name': 'Zara', 'Age': 7, 'Sex': 'female'}
>>> 
  •  集合(set)
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

集合需要掌握的操作:

1、长度len
2、成员运算 in     not in
3、差集 -
4、合集 |
5、交集&
6、对称差集^


>>> s = set('asdfghj')
>>> t = set('asghjklb')
>>> s-t                        #   求差集(只有a中拥有的而b集合没有的元素)
{'d', 'f'}
>>> s|t                        #   并集(既有集合a的元素,又有集合b的元素 )
{'f', 'd', 'k', 'b', 'l', 'g', 'h', 'j', 's', 'a'}
>>> s&t                        #   a和b的交集(集合a和b中都包含了的元素)
{'g', 'h', 'j', 's', 'a'}
>>> s^t                       #  对称差集(不同时包含于a和b的元素)
{'f', 'd', 'k', 'b', 'l'}
>>> 


集合推导式

 集合推导式

>>> s = {obj for obj in 'asccdfg' if obj not in 'acf'}
>>> print(s)
{'g', 's', 'd'}
>>> 

猜你喜欢

转载自www.cnblogs.com/surpass123/p/12373988.html