当前位置:   article > 正文

python基础学习(2)——超详细 变量,序列和基本数据类型(Number、String、List、Tuple、Set、Dictionary),以及类型转换_python 变量和序列的区别

python 变量和序列的区别

变量介绍

Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
Python 中,变量就是变量,它没有类型,所说的"类型"是变量所指的内存中对象的类型。
等号(=)用来给变量赋值。

在这里插入图片描述

Python3 中有六个标准的数据类型:
Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)

序列介绍

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
Python有6中内置的序列(即列表、元组、字符串、Unicode字符串、buffer对象和 xrange 对象。),但最常见的是列表和元组。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

可变序列:List
不可变序列:元组,字符串
序列的通用操作:(1)判断值是否属于序列(in,not in),如:print(a in list1)
(2)连接(+)与重复(*)
(3)下标索引(list1[0]),截取切片

(1)Number(数字)

Python3 支持 int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。

 a, b, c, d = 20, 5.5, True, 4+3j
print(type(a),type(b),type(c),type(d))#<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
print(isinstance(a, int))#

'''
isinstance和type区别
type()不会认为子类是一种父类类型。
isinstance()会认为子类是一种父类类型。

'''
#True的实际值是1,False的实际值是0

print(True == 2)#False
print(True == 1)#True
print(False == 0)#True
print(False == 2)#False

del a#通过使用del语句删除对象
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

补充bool()函数
在这里插入图片描述

(2)String(字符串)

str1 = 'Gunooh'
#访问与截取
print(str1[-1])       #输出最后一个字符 h
print (str1[0:-1])    # 输出第一个到倒数第二个的所有字符 Gunoo 
print (str1[2:5])     # 输出下标为2到下标为5的字符(左闭右开) noo
print (str1[2:])      # 输出从下标为2后的所有字符 nooh
print (str1 * 3)      # 星号 * 表示复制当前字符串,也可以写成 print (3 * str) 
print (str1 + "TEST") # 加号 + 是字符串的连接符

#str[0] = 'm' #会报错TypeError: 'str' object does not support item assignment

#截取可以接收第三个参数,参数作用是截取的步长,如果第三个参数为负数表示逆向读取
print(str1[2:5:2]) #no
print(str1[-1:-3:-2])#h

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
#字符串也可以使用 """...""" 或者 '''...''' 跨越多行。 
str1 = '''123'''
str2 = '''a
b
c'''
#str2这种跨越多行写法不能使用''或者"",会报错。

print(str1)
print(str2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述


'''
Python 使用反斜杠 \ 转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串

另外,反斜杠(\)可以作为续行符,表示下一行是上一行的延续。
'''
print('Ru\noob')
print(r'Ru\noob')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

总结:
1.Python中的字符串用单引号 ’ 或双引号 " 括起来,也可以使用 “”"…""" 或者 ‘’’…’’’ 跨越多行。
2.使用反斜杠 \ 转义特殊字符。,使用r可以让反斜杠不发生转义。
3.字符串可以用+运算符连接在一起,用*运算符重复。
4.Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
5.Python中的字符串不能改变(不能向一个索引位置赋值)
6.Python 没有单独的字符类型,一个字符就是长度为1的字符串。

补充,str.split()用法

函数说明
str.split(str="",num=string.count(str))[n]
参数说明:
str:(参数中的)表示为分隔符,默认为空格,但是不能为空(’’)。若字符串中没有分隔符,则把整个字符串作为列表的一个元素
num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量
[n]:表示选取第n个分片

#str.split(str="", num=string.count(str))
#参数:str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。但自己不能写str=""
#      num – 分割次数。默认为 -1, 即分隔所有。
#返回值:Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
#返回分割后的字符串列表

str = "Line1 -abcdef\nLine2-abc Line4-abcd";
print(str.split())  # 以空字符为分隔符,包含 \n,空格,制表符等 ['Line1', '-abcdef', 'Line2-abc', 'Line4-abcd']
print(str.split(' '))  # 以空格为分隔符 ['Line1', '-abcdef\nLine2-abc', 'Line4-abcd']
print(str.split(' ',1)) #以空格为分隔符,分隔成两个 ['Line1', '-abcdef\nLine2-abc Line4-abcd']

str="hello boy<[www.doiido.com]>byebye"
print(str.split("["))  # ['hello boy<', 'www.doiido.com]>byebye']
print(str.split("[")[1].split("]")[0]) #www.doiido.com
print(str.split("[")[1].split("]")[0].split("."))#['www', 'doiido', 'com']

print(str) #hello boy<[www.doiido.com]>byebye


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

(3)列表List
列表常用操作链接

#列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
#列表是写在方括号 [] 之间、用逗号分隔开。
#和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
#列表是有序对象,可以通过下标索引访问数据
list = [ 'abcd', 786 , 2.23 , [1,2] ]
tinylist = [123, 'runoob']

print (list[0])         # 输出列表第一个元素 abcd
print (list[1:3])       # 从第二个开始输出到第三个元素 [786, 2.23]
print (list[2:])        # 输出从第三个元素开始的所有元素 [2.23, [1, 2]]
print (tinylist * 2)    # 输出两次列表 [123, 'runoob', 123, 'runoob'],tinylist本身不变
print (list + tinylist) # 连接列表

list[0] = 12            #Python字符串不一样的是,列表中的元素是可以改变的
print(list)             #[12, 786, 2.23, [1, 2]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
#Python 列表截取可以接收第三个参数,参数作用是截取的步长,如果第三个参数为负数表示逆向读取

list = [1,2,8,4,5,7]
#以下实例在索引 1 到索引 4 的位置并设置为步长为 2(间隔一个位置)来截取字符串
print(list[1:5:2])#[2, 4]
#逆向读取,步长为2
print(list[-1:-4:-2])#[7,4]
print(list[4:2:-1])#[5,4]
print(list[-1::-1])#[7, 5, 4, 8, 2, 1] 第二个参数为空,表示移动到列表末尾
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

(4)tuple(元组)

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。
元组用()标识,不能二次赋值,也没有append()方法,可以理解为不可变的列表。是有序对象,可以通过下标索引进行访问数据。

元组中的元素类型也可以不相同:

Tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2  )
tinytuple = (123, 'runoob')
print (Tuple[0])          # 输出元组的第一个元素 abcd
print (Tuple[1:3])        # 输出从第二个元素开始到第三个元素 (786, 2.23)
print (Tuple[2:])         # 输出从第三个元素开始的所有元素 (2.23, 'runoob', 70.2)
print (tinytuple * 2)     # 输出两次元组 (123, 'runoob', 123, 'runoob')
print (Tuple + tinytuple) # 连接元组 ('abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob')

Tuple.append(1) #会报错AttributeError: 'tuple' object has no attribute 'append'

tup1 = (50,)#当元组中只包含一个元素时,需要在元素后面添加逗号
print(len(tup1))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

(5)Set(集合)

集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
基本功能是进行成员关系测试和删除重复元素。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

sites = {'Google', 'Taobao', 1, 'Facebook', 'Taobao', 3.0,'A','a'}

print(sites)   # 输出集合,重复的元素被自动去掉{1, 3.0, 'Google', 'Facebook', 'Taobao', 'A', 'a'}

# 成员测试
if 3 in sites :
    print('3 在集合中')
else :
    print('3 不在集合中')
#3 在集合中

# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
a1 = {'a','b','r','a','c','a','d','a','b','r','a'}
print(a1)#{'c', 'b', 'd', 'a', 'r'}
print(a) #{'c', 'b', 'd', 'a', 'r'}
print(b) #{'m', 'c', 'z', 'l', 'a'}
print(a - b)     # a 和 b 的差集 {'b', 'd', 'r'}
print(a | b)     # a 和 b 的并集{'m', 'c', 'z', 'b', 'd', 'l', 'a', 'r'}
print(a & b)     # a 和 b 的交集{'c', 'a'}
print(a ^ b)     # a 和 b 中不同时存在的元素 {'b', 'd', 'l', 'm', 'z', 'r'}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

(6)Dictionary(字典)

列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
创建空字典使用 { }

dict = {}
dict['one'] = "哈哈"
dict[2]     = "嘿嘿"
dict['one'] = '呵呵'
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}


print (dict['one'])       # 输出键为 'one' 的值 呵呵
print (dict[2])           # 输出键为 2 的值 嘿嘿
print (tinydict)          # 输出完整的字典 {'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}
print (tinydict.keys())   # 输出所有键 dict_keys(['name', 'code', 'site'])
print (tinydict.values()) # 输出所有值 dict_values(['runoob', 1, 'www.runoob.com'])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

补充(7)类型转换

var1 = 1.7
print(int(var1)) #转换为整数1
print(round(var1))#四舍五入 2
print(str(var1))
print(var1,type(var1)) #1.7 <class 'float'>
  • 1
  • 2
  • 3
  • 4
  • 5

int(x) 将x转换为一个整数
float(x) 将x转换为一个浮点数
str(x) 将对象 x 转换为字符串
tuple(s) 将序列 s 转换为一个元组
list(s) 将序列 s 转换为一个列表
set(s)转换为集合
dict(d) 创建一个字典。d 必须是一个 (key, value)元组序列

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号