基本数据类型操作

Posted surpass123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基本数据类型操作相关的知识,希望对你有一定的参考价值。

一、标准数据类型

在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‘]:{}
dict_obj[‘age‘]:{}
dict_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}
>>> 

 

以上是关于基本数据类型操作的主要内容,如果未能解决你的问题,请参考以下文章

Huawei_Netconf_Ncclient

jquery基本操作

视图或片段库为常见数据类型组成 UI

片段“F1”不能在这里传播,因为“节点”类型的对象永远不能是“商店”类型

学习NumPy全套代码超详细基本操作数据类型数组运算复制和试图索引切片和迭代形状操作通用函数线性代数

如何为 apollo 客户端生成片段类型?