Python基础-6种数据结构

 Python一共有6种数据类型,分别是:数值型(Nmber)、字符串类型(Sring)、列表类型(List)、元组类型(Tuple)、字典类型(dictionary)、集合类型(Set)。

        注:python并没有数组类型。数组类型数据是通过内置数据库numpy来实现,因此,Python数据结构中并不包含数组。

        学习思路介绍:(为大家介绍我的学习思路,一、是方便大家更快地理解我撰写文章的逻辑顺序,让大家知道我为什么要按照这样的顺序写代码,二、也是为了方便大家学习记忆,当学习的知识比较多的时候,很容易搞混弄杂,这些思路也是我本人在学习总结后所得出来的。当然,不否认大家有更好的方法,欢迎大家评论区里分享哦~)

        对于Python数据结构的介绍,本人借鉴数据库的整体逻辑思路,基础的从数据的增、删、查、改入手,这已经包含了大部分的操作,另外还有一小部分的特有的操作。


目录

一、数值类型(Nmber)

二、字符串类型(Sring)

三、列表类型(List)

四、元组类型(Tuple)

五、字典类型(dictionary)

六、集合类型(Set)


一、数值类型(Nmber)

"""布尔类型"""
print(True)
print(False)
print(True+False)
# 逻辑运算,与或非  and  or  not
print(True and False)
print(True or False)
print(not False)

"""数字类型"""
# 算术运算--加 减 乘 除
print("2+3:",2+3)
print("5-3:",5-3)
print("2*6:",2*6)
print("8/3:",8/3)
# 其余常见运算
print("5//3整除结果为:",5//3)  # 整除
print("8%3取余结果为:",8%3)   # 取余
print("2的3次方结果为:",2**3)  #2的3次方

运行结果为:

True
False
1
False
True
True
2+3: 5
5-3: 2
2*6: 12
8/3: 2.6666666666666665
5//3整除结果为: 1
8%3取余结果为: 2
2的3次方结果为: 8

Process finished with exit code 0

查找某个字符的索引值:find()

二、字符串类型(Sring)

"""创建,定义,生成"""
string1 = "python"
string2 = "scala"
string3 = "java"

"""换行书写"""
# 方式一:\
string5 = "python"\
        "java"
print("\方式的换行书写结果为:",string5)
# 方式二
string6 = """
sddij
adfjig
"""
print("string6的结果为:",string6)
# 方式三:\n
string7 = "java\npython"
print("\n方式后的结果为:",string7)

"""增----->字符串的拼接"""
# 方式一:+
string4 = string2+string1
print("string4:",string4)  # scalapython
# 方式二:*
string = string3*3
print("string:",string)

# 删

# 查---->切片,索引
string = "dfisjfghorfisvv"
print("从第二位到第5位,步长为2:",string[1:5:2])
print("最后一位到第2位:",string[-1:0:-1])  # string[-1:0],没有输出结果,因为步长默认是1

# 改:字符串有着不可变性

"""其余常见操作"""

# 1.获取字符串的长度
print("字符串的长度:",len(string))

# 2.字符串的逆序输出
"""方式一"""
print("字符串的逆序输出:",string[::-1])
"""方式二"""
print("字符串的逆序输出",list(reversed(string)))

# 3.字符串的替换
string1 = string.replace("v","u",1)
print("string:",string)
print("string1:",string1)
# string和string1的值,体现了字符串的不可变性

# 4.大小写转换
# 4.1转化为大写
string1 = string.upper()
print(string)
print(string1)

# 4.2转化为小写
string = "dfisjfghorFFDFisvv"
string1 = string.lower()
print(string)
print(string1)

 运行结果为:

\方式的换行书写结果为: pythonjava
string6的结果为: 
sddij
adfjig


方式后的结果为: java
python
string4: scalapython
string: javajavajava
从第二位到第5位,步长为2: fs
最后一位到第2位: vvsifrohgfjsif
字符串的长度: 15
字符串的逆序输出: vvsifrohgfjsifd
字符串的逆序输出 ['v', 'v', 's', 'i', 'f', 'r', 'o', 'h', 'g', 'f', 'j', 's', 'i', 'f', 'd']
string: dfisjfghorfisvv
string1: dfisjfghorfisuv
dfisjfghorfisvv
DFISJFGHORFISVV
dfisjfghorFFDFisvv
dfisjfghorffdfisvv

Process finished with exit code 0

查找某个元素的索引值:index()

三、列表类型(List)

"""定义 关键字list"""
lst1 = ['cat','dog','pig','rabbit']

a = ('a','b','c','d')
a = list(a)

"""增"""
# 方式1:追加
lst1.append('tianjia')
print("追加元素后的lst1:",lst1)

# 方式2:*或者+
lst= lst1*2
print("追加方式2:*",lst)
lst= lst1+lst1
print("追加方式2:+",lst)

# insert方式
lst1.insert(0,'chicken')
lst1.insert(0,'chicken')
print("insert方式插入后的:",lst1)

"""删"""
# 方式1:remove
lst1.remove('chicken')
print("删除chicken后的:",lst1)
#方式二:pop
lst1.pop()
print("执行pop操作后的:",lst1)

"""查--->检索"""
lst = lst1[:2]
print("检索切片后的lst:",lst)

# 改
lst1[0]='new1'  # 涉及1个
print(lst1)
lst1[:2]=(1,2,3)  # 涉及多个
print(lst1)
# 没有replace()方法

"""其他操作"""
# 1.遍历
print("enumerate遍历后的结果为:")
for i in enumerate(lst1):
    print(i)

# 2.列表推导式
print("列表推导式后的结果为:")
lst2 = [x*2 for x in lst1]
print(lst2)


"""数值型列表 """
lst3 = [4,5,6,7,5,8]
# 排序
lst3.sort(reverse=True)  # reverse反序,默认是False,若为True代表逆序排列
print("使用sort排序后的结果:",lst3)

# 反置
# 内置函数reversed:
lst4 = [5,4,6,4,32,45,2,14]
print("使用reversed()内置函数反置后的结果:",list(reversed(lst4)))

lst5 = [2,5,6,8,6,4,5,4]
lst4.reverse()
print("使用reverse反置后的结果",lst5)

运行结果为:

追加元素后的lst1: ['cat', 'dog', 'pig', 'rabbit', 'tianjia']
追加方式2:* ['cat', 'dog', 'pig', 'rabbit', 'tianjia', 'cat', 'dog', 'pig', 'rabbit', 'tianjia']
追加方式2:+ ['cat', 'dog', 'pig', 'rabbit', 'tianjia', 'cat', 'dog', 'pig', 'rabbit', 'tianjia']
insert方式插入后的: ['chicken', 'chicken', 'cat', 'dog', 'pig', 'rabbit', 'tianjia']
删除chicken后的: ['chicken', 'cat', 'dog', 'pig', 'rabbit', 'tianjia']
执行pop操作后的: ['chicken', 'cat', 'dog', 'pig', 'rabbit']
检索切片后的lst: ['chicken', 'cat']
['new1', 'cat', 'dog', 'pig', 'rabbit']
[1, 2, 3, 'dog', 'pig', 'rabbit']
enumerate遍历后的结果为:
(0, 1)
(1, 2)
(2, 3)
(3, 'dog')
(4, 'pig')
(5, 'rabbit')
列表推导式后的结果为:
[2, 4, 6, 'dogdog', 'pigpig', 'rabbitrabbit']
使用sort排序后的结果: [8, 7, 6, 5, 5, 4]
使用reversed()内置函数反置后的结果: [14, 2, 45, 32, 4, 6, 4, 5]
使用reverse反置后的结果 [2, 5, 6, 8, 6, 4, 5, 4]

Process finished with exit code 0

四、元组类型(Tuple)

"""创建,定义  不可变性"""
tuple1 = (1,2,3,4,"java",'python')

# 关键字tuple
a = ['dfer','grge',5,'frgr']
tuple2 = tuple(a)
print("转化为元组类型后的a为:",tuple2)

"""增"""
# 方式1:*
tuple3 = tuple1*2
print("*方式后的数据:",tuple3)
# 方式1:+
tuple4 = tuple1+(5,6,'defc')
print("+方式后的数据:",tuple4)

"""删"""

'''查'''
b = tuple1[-1:-4:-1]
print("切片检索后的数据为:",b)

"""改"""
# 元祖具有不可变性,但是当元组中有列表时,改列表可变,如:
tuple5 = (1,5,'grh','gthe','aewr',[1,2,5,'grdh'])
print("该数据类型为:",type(tuple5))

# tuple5[0] = 2   会报错,提示信息如下:
# TypeError: 'tuple' object does not support item assignment

# 当修改元组里的可变数据时:
tuple5[5][0]=9
print("修改后的结果为:",tuple5)

运行结果为:

转化为元组类型后的a为: ('dfer', 'grge', 5, 'frgr')
*方式后的数据: (1, 2, 3, 4, 'java', 'python', 1, 2, 3, 4, 'java', 'python')
+方式后的数据: (1, 2, 3, 4, 'java', 'python', 5, 6, 'defc')
切片检索后的数据为: ('python', 'java', 4)
该数据类型为: 
修改后的结果为: (1, 5, 'grh', 'gthe', 'aewr', [9, 2, 5, 'grdh'])

Process finished with exit code 0

五、字典类型(dictionary)

"""定义,创建"""
# 方式1:
dic1 = { "a":1,
        'b':2 }
print("dic1为:",dic1)

# 方式2:
dic2 = dict(c=3,d=4)
print("dic2为:",dic2)

# 方式3:
dic3 = dict([('e',5),('f',6)])
print("dic3为:",dic3)

# 一个键对应多个值:将这多个值保存到另一个容器如列表或集合中
dic4 = dict(m=[1,2,3],n=[4,5,6])
print("dic4为:",dic4)


"""增"""
# 方式1:直接增加
dic1['q']=9
print("增加q之后的数据:",dic1)

# 方式2:updata()方法
dic1.update({'y':5,'r':6})
print("采用updata方法后的数据为:",dic1)


"""删"""
# 清除数据
dic2.clear()
print("dic2的数据被清楚后,输出结果:",dic2)

# 删除
del(dic3)
# print("执行del()操作后的数据为:",dic3)   会报错,提示如下:
# NameError: name 'dic3' is not defined


"""查----索引"""
# 直接获取
print("dic1中a对应的值为:",dic1['a'])

# 通过get方法
print("通过get方法获取字典中的值:",dic1.get('a'))

# 若获取的元素不存在时,可以自定义输出信息
print(dic1.get('f','索引不存在'))


"""改"""
dic1['a']=2
print(dic1)


"""其他的操作"""
# 1.获取所有的key
print("dic1所有的key为:",dic1.keys())

# 2.获取所有的值
print("dic1所有的值为:",dic1.values())

# 3.items  以列表返回可遍历的(键, 值)元组数组
print("items操作后的数据为:",dic1.items())

# 4.字典的拷贝
dic6 = dict([('a',1),('b',2),('c',3)])
y = dic6.copy()
y['c'] = 4
print("dic6为:",dic6)
print("y为:",y)

运行结果为:

dic1为: {'a': 1, 'b': 2}
dic2为: {'c': 3, 'd': 4}
dic3为: {'e': 5, 'f': 6}
dic4为: {'m': [1, 2, 3], 'n': [4, 5, 6]}
增加q之后的数据: {'a': 1, 'b': 2, 'q': 9}
采用updata方法后的数据为: {'a': 1, 'b': 2, 'q': 9, 'y': 5, 'r': 6}
dic2的数据被清楚后,输出结果: {}
dic1中a对应的值为: 1
通过get方法获取字典中的值: 1
索引不存在
{'a': 2, 'b': 2, 'q': 9, 'y': 5, 'r': 6}
dic1所有的key为: dict_keys(['a', 'b', 'q', 'y', 'r'])
dic1所有的值为: dict_values([2, 2, 9, 5, 6])
items操作后的数据为: dict_items([('a', 2), ('b', 2), ('q', 9), ('y', 5), ('r', 6)])
dic6为: {'a': 1, 'b': 2, 'c': 3}
y为: {'a': 1, 'b': 2, 'c': 4}

Process finished with exit code 0

六、集合类型(Set)

"""定义,创建 """
set1 = {1,2,3,4,8,8}
print("set1的结果为:",set1)  # 会去掉重复的数据  {1, 2, 3, 4, 8}

a =(1,5,6,'gtr','s','gtr')
set2 = set(a)
print("set2的结果为:",set2)  # 去除位置靠后的重复数据


"""增"""
set1.add(15)
print("添加元素后的数据为:",set1)


"""删"""
# pop
set1.pop()
print("删除元素后的数据为:",set1)  # 先删除第一个数据

# remove()
set1.remove(15)
print("删除元素后的数据为:",set1)


"""查"""
#验证是否存在
print("8在set1中吗?",8 in set1)

"""改"""


"""不可变集合"""
set3 = frozenset(set1)

运行结果:

set1的结果为: {1, 2, 3, 4, 8}
set2的结果为: {1, 's', 'gtr', 5, 6}
添加元素后的数据为: {1, 2, 3, 4, 8, 15}
删除元素后的数据为: {2, 3, 4, 8, 15}
删除元素后的数据为: {2, 3, 4, 8}
8在set1中吗? True

Process finished with exit code 0

你可能感兴趣的:(python,数据结构,开发语言)