Python入门学习笔记01(常用数据类型)

  • 常用数据类型

从语法角度看,Python和C、C++ 等常用语言最明显的区别就是变量定义的时候无需指定数据类型,变量的类型通过赋值指定,但需要注意的是Python仍然是一门强类型语言,变量一经赋值要变成其他类型必须经过强制类型转换。另一个不同点在于Python代码的强制缩进,通过缩进实现的是C/C++语言中大括号代码块的功能。初接触这一点对熟悉C/C++的人来说相当的别扭,如果使用Python原生的IDLE敲代码出错的可能性相当的高,幸好有PyCharm之类的神器能够辅助我们。

下面进入主题,Python中的常用数据类型有一下六种:
  1. 数(Number)
  2. 字符串(String)
  3. 集合(Set)
  4. 列表(List)
  5. 数据字典(Dictionary)
  6. 元组(Tuple)
  • Number
Python3中整型数据只有一种,既长整型,而Python2中区分int和long
  • String
字符串中的转义字符可以通过在字符串前添加r来进行取消,如:
 
输入
print("hello\nworld!")
输出
hello
world!
输入
print(r"hello\nworld!")
输出
hello\nworld!
注意与C/C++不同,字符串可以通过下标访问,但是不可以赋值。
下面代码会报错:
var1 = "abcd"
var1[3] = "e"
字符串可以通过下标实现截取,格式为str[头下标:尾下标],下标为负数表示从最后一个字符算起
下标的原则为“顾头不顾尾”,既左开右闭
 
输入:
var1 = "abcdefg"
print(var1[1:])
print(var1[1:2])
print(var1[1:-1])
输出:
bcdefg
b
bcdef
  • set
创建集合可以通过{}或者set()函数,但是创建空集合只能用set()函数,因为{}是用来创建空字典的。frozenset()返回一个不可变的集合,即没有add、pop等方法的set
集合本质上是一组无序不重复数据的集合,集合会自动去除重复元素。
 
输入:
var1 = {"1","2","3","1","2"}
print(var1)
输出:
{'2', '3', '1'}
 
集合的另一个基本功能是进行集合元素间的差并集操作。
 
输入
var1 = set("abcde")
var2 = set("de11")
#差集
print(var1 - var2)
print(var1.difference(var2))
#并集
print(var1 | var2)
print(var1.union(var2))
#交集
print(var1 & var2)
print(var1.intersection(var2))
#不同时存在于两个集合
print(var1 ^ var2)
print(var1.symmetric_difference(var2))
 
输出
{'a', 'b', 'c'}
{'a', 'b', 'c'}
{'a', 'c', 'b', '1', 'd', 'e'}
{'a', 'c', 'b', '1', 'd', 'e'}
{'d', 'e'}
{'d', 'e'}
{'a', 'b', '1', 'c'}
{'a', 'b', '1', 'c'}

 

添加元素使用add和update,add一次添加一个元素,update一次添加多个,所以当使用一个字符串作为参数时,add将整个字符串作为一个元素添加,update将会字符串拆分为字符进行添加
var1 = set("1234")
var1.add("dell")
print(var1)
var1.update("dell")
print(var1)

输出

{'3', 'dell', '1', '2', '4'}
{'l', 'd', '3', 'dell', '1', '2', 'e', '4'}

  

移除集合元素使用remove和discard,区别在于前者删除一个不存在的元素时会抛出异常,后者不会。

 
  • List
  1. 列表通过[]创建,与字符串一样也可以通过下标进行截取。
  2. 列表通过index(data)获取第一个匹配的数据的位置,注意如果查询不到会抛出异常。
  3. 列表通过count(data)统计data在列表中出现的次数
  4. sort()函数可以对list函数进行排序,但是会打乱原始列表的顺序,排序的顺序按照ASCII码,既特殊字符、数字、大写字母、小写字母。如果不想打乱原始List的顺序可以使用sorted(list)产生一个新的列表。
  5. List通过append和insert进行数据的追加,append固定追加在最后,insert(index,data)在列表的index位置插入数据。
  6. list有三种删除数据的方法:
  • remove(data),删除列表中第一个查找到的data
  • del list[index],删除index位置的数据
  • pop(index),删除index位置的数据,默认为最后一个

  list的拷贝分为浅拷贝和深拷贝两种,深拷贝是完全取得list的一份拷贝,浅拷贝只会将第一层进行完全的拷贝,对于引用类型的数据则只是拷贝了一个地址

  •  浅拷贝的三种方式
      • list2 = list(list1)
        list3 = list1.copy()
        list4 = list1[:]
  • 深拷贝
    • list5 =copy.deepcopy(list1)
import copy
#浅copy的特点是只会将第一层进行完全的拷贝,对于引用类型的数据则只是拷贝了一个地址
#浅copy的三种方式
list1 = ["beijing","shanghai","shenzhen",["beijing","haiding"]]
list2 = list(list1)
list3 = list1.copy()
list4 = list1[:]
#深拷贝是对所有数据就行了一次完全的拷贝
list5 =copy.deepcopy(list1)

list1[2] = "上海"
list1[3][0] = "北京"

print(list1)
print(list2)
print(list3)
print(list4)

  输出如下

['beijing', 'shanghai', '上海', ['北京', 'haiding']]
['beijing', 'shanghai', 'shenzhen', ['北京', 'haiding']]
['beijing', 'shanghai', 'shenzhen', ['北京', 'haiding']]
['beijing', 'shanghai', 'shenzhen', ['北京', 'haiding']]
['beijing', 'shanghai', 'shenzhen', ['beijing', 'haiding']]

  

extend()函数:用于将一个列表附加到另一个列表之后

list1 = ["1","2","3","2"]
list2 = ["a","b","c"]
list1.extend(list2)
print(list1)

  输出:

['1', '2', '3', '2', 'a', 'b', 'c']
  • Tuple
元组与列表类似,不同点在于是只读的,不能通过下标进行赋值。同时元组也能利用下标进行截取,可见其实字符串就是特殊的元组。
 
  • Dictionary
数据字典通过{}创建,与其他语言中的数据字典类似。
通过键直接取值必须确认肯定有这个键,否则会抛异常,安全的取值方法为使用get(key)函数。
 
  fromkey()函数
  本函数的作用是使用一个列表作为键构建一个有默认值的数据字典。
list1 = [1,2,3,4]
#情况1,用于构建数据字典默认值的数据没有嵌套
list2 = ["1","2","3","4"]
#情况2,有嵌套
list3 = [1,["hello"],3]

dic2 = dict.fromkeys(list1,list2)
dic2[2] = "hello"
print(dic2)
dic3 = dict.fromkeys(list1,list3)
dic3[2][1] = "bye"
dic3[2][0] = 6
print(dic3)

  输出

  {1: ['1', '2', '3', '4'], 2: 'hello', 3: ['1', '2', '3', '4'], 4: ['1', '2', '3', '4']}
  {1: [6, 'bye', 3], 2: [6, 'bye', 3], 3: [6, 'bye', 3], 4: [6, 'bye', 3]}

  可以看到,如果用于构建默认值的数据是一个嵌套的数据类型的话,所有的值指向了同一块引用,修改时会被同时修改。

  items()函数

  将数据字典转化为一个列表,列表元素为索引与值构成的列表。

  setdefault()函数

  检查数据字典是否包含某一个键,如果不包含的话向数据字典插入该键值对(不存在则添加,存在则跳过)。

dic1 = {1:"ab",2:"cd",3:"ef","q":"bye"}
dic2 = {1:"ab",2:"cd",3:"ef","q":"bye"}
dic1.setdefault(1,"kk")
dic2.setdefault(7,"kk")
print(dic1)
print(dic2)

  输出

{1: 'ab', 2: 'cd', 3: 'ef', 'q': 'bye'}
{1: 'ab', 2: 'cd', 3: 'ef', 'q': 'bye', 7: 'kk'}

  update()函数

  检查数据字典是否包含某一个键,如果包含则更新,不包含则添加(不存在则添加,存在则更新)。

dic1 = {1:"ab",2:"cd",3:"ef","q":"bye"}
dic2 = {3:"hello","f":"come"}
dic1.update(dic2)
print(dic1)

  输出

{1: 'ab', 2: 'cd', 3: 'hello', 'q': 'bye', 'f': 'come'}

  

 PS:一个强大的字符串转set、list、dict的函数eval

eval函数可以将一个格式正确的字符串转换为一个对应的数据结构,字符串的格式即为该数据结构用print输出的结果。

eval本质是将一个字符串转换为一行代码,功能强大但是存在安全性的问题,具体可参见https://www.cnblogs.com/cxchanpin/p/6882451.html

 
 
 

转载于:https://www.cnblogs.com/Hexdecimal/p/9293081.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值