record-06 数据结构

#__author: hasee
#date:  2018/1/11
#数据结构是用于进行程序中一组存在特定联系的数据的管理
#通过数据结构来管理数据,更利于这一组数据的后续操作

#四种数据结构:列表、元组、字典、字符串;序列:列表、元组、字符串;对序列可进行索引和切片操作;
#列表和字典可变,可以进行增删改查;而元组和字符串不可变,不能进行增删改查 #这三种数据结构是通过不同的方式来管理数据,因此应用、场景不同 #列表、元组都是通过位置来管理数据的 #字段是通过名称来管理数据的 l1=[1,2,3,4,5] #可变的数据结构 t1=(1,2,3,4,5) #不可变 d1={'a':1,'b':2,'c':3} #键值对 l2=[1,2,3,'a','b',1.23,True,False] #一组数据没有数据类型限制 l3=[l1,l2,t1,d1] t2=(1,2,3,'a','b',1.23,True,False) t3=(l1,l2,t1,d1) d2={'a':1,'b':'zhangsan','c':3.45,'d':True} t4=(1,) #定义只包含一个元素的元组,不能省略逗号 l4=[1] d3={'a':1,'a':1} #定义字典时,值可以相同,但键不能相同 #0,0.0,'',None,(),[],{} 使用bool()函数会转换成False #数据结构的操作 #序列是一组有序的数据集合 #列表、元组都是有序的数据集合,因此是序列的一种 #字符串也可以被认为是一种数据结构,通过一对引号管理一组数据的,并且是按照位置来管理的 #字符串也是序列的一种 s='hello world' #索引操作符 可以提取序列中的一个元素 #切片操作符 可以提取序列中的一个片段 #索引序号是从0开始的 print(l1[4]) print(t1[1]) print(s[0]) #索引不能超出范围 #print(l1[5]) #索引序号可以为负数 print(l1[-1]) #切片操作符 print(l1[0:2]) #取前不取后 print(s[0:5]) print(l1[-2:-1]) #切片操作符可以使用负数序号 print(l1[-2:100]) #切片操作符可以使用超出范围的索引序号 print(l1[-2:]) #不指定结束位置,表示截取到最后一个元素位置,并且包含最后一个元素 print(l1[:2]) #不指定开始位置,表示从第一个元素开始截取 print(l1[:]) #同时不指定开始、结束位置时,切片操作符中的冒号不能省略 #字典通过键来作为索引使用 print(d1['a']) #字典不能使用切片操作符 l1=[1,2,3,4,5,6,7,8,9,10] t1=(1,2,3,4,5,6,7,8,9,10) d1={'a':1,'b':2,'c':3} s1="hello world" #切片操作符 可以指定步长 print(l1[::2]) print(l1[::-1]) #步长为负数,表示将切片翻转 print(l1[9:0:-1]) print(l1) #切片操作并不会改变原有的数据结构 #数据结构与for循环的使用 for x in l1: print(x) for y in t1: print(y) for z in s1: print(z) for d in d1: print(d1[d]) #列表的元素修改 l1[0]=100 print(l1) #列表的元素新增 l1.append(200) print(l1) l1.insert(2,300) print(l1) #列表的元素删除 del l1[1] print(l1) l1.pop() print(l1) l1.pop(2) print(l1) l1.remove(4) print(l1) #字典的元素修改 d1['a']=100 print(d1) #字典的元素新增 d1['d']=4 print(d1) #字典的元素删除 del d1['a'] print(d1) #字符串定义完成后,不能修改 #元组定义完成后,不能修改

#无限for循环
for i in l1:
l1.append(0)
print('hello')

#将列表排序
#sort()使用有限制,只能完成数值型列表的排序
#sort()排序后,将原列表修改成新的列表
l1=[4,3,2,5,6,1,1.23,2.34]
l1.sort()
print(l1)

l1.sort(reverse=True)
print(l1)


#将列表翻转
l2=[1,2,3,4]
#reverse()翻转,将原列表修改成新列表
l2.reverse()
print(l2)

#计算长度 len()
l1=[4,3,2,5,6,1,1.23,2.34]
t1=(4,3,2,5,6,1,1.23,2.34)
d1={'a':1,'b':2}
s1="hello world"
print(len(l1))
print(len(t1))
print(len(d1))
print(len(s1))

#字符串与列表的转换
#通过字符串的方法split()、join()来完成
s=input()
result=s.split() #split()接收的实参作为分割符
result[0]='hi'
print(result)

print(' '.join(result)) #join()通过拼接符来调用

#某个公司传输数据,数据是四位的整数,在传递过程中是加密的
#加密规则如下:每位数字都加上5,然后再用除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换
#设计解密函数,能够根据接收的数据判断出原始数据


#接收用户输入的4位整数(加密数据)
#以字符串的形式完成数据中1、2、3、4位数据的提取
#先做数据交换处理
#利用for循环,将字符串中的每一位解密
#输出解密后的答案


user='1234'
user=user[3]+user[2]+user[1]+user[0]
#user='4321'

result=''

for u in user:
    u=int(u)
    if u>=5:
        u=u-5
    else:
        u=u+5
    result=result+str(u)
    #第一次循环 '9'
    #第二次循环 '98'
    #第三次循环 '987'
    #第四次循环 '9876'

print(result)

数据结构
列表 #列表和元组都是通过位置来管理,但是列表是可变数据结构,元组和字符串是不可变数据结构
元组
字典 #字典是通过名称来管理,是可变的数据结构
字符串

可变的数据结构即为可修改的数据结构,就可以进行相应的增删改查

序列
列表
元组
字符串 #字典是没有特定序列的

for循环常与序列搭配使用 #range也是序列
for循环遍历字典:显示无序的显示键名
print(d1[d]) #d1表示字典,d表示for循环跟的变量:显示值

对序列可进行的操作:
索引
切片 #列表、元组、字符串就是序列,可进行这些操作
#字典不是序列,但是可通过键来作为索引使用,但是不可以切片,因为无顺序


sort、reverse会改变原数据结构,得到新列表
但是切片不会改变原来的数据结构,只是得到新表

字符串通过列表(可对列表进行增删改查)再得到新的字符串 #字符串并未改变,只是得到了新的字符串而已
字符串转化为列表:
s = 'my name is zhouxingchi'
s.split() #括号如果为空,表示默认空白字符分割,也可以自己设定相应的字符串里面的字符作为字符分割

列表转化为字符串:
result = s.split()
拼接 ' '.join(result) #result为前面字符串转化的列表,join通过前面的拼接符来调用








  

原文地址:https://www.cnblogs.com/minkillmax/p/8270680.html