码迷,mamicode.com
首页 > 其他好文 > 详细

基本数据类型操作

时间:2020-02-28 13:41:25      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:只读   重复   print   lse   内存地址   world   asc   不可   val   

一、标准数据类型

在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}
>>> 

 

基本数据类型操作

标签:只读   重复   print   lse   内存地址   world   asc   不可   val   

原文地址:https://www.cnblogs.com/surpass123/p/12373988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!