python3学习(三)列表、字典、元组、字符串常用操作

=======================================List 列表-==================================

#list--> 列表 数组 array

stu_name = ['托尔斯泰','菜菜','test',1,1.5,]     #类型不固定,想加什么类型都可以

#下标、索引、角标,用来取值。

#计算机里面起始都是从0开始

print(stu_name[0])

#增

stu_name.append('测试林')     #append 在list的末尾添加一个元素
print(stu_name)
stu_name.insert(1, '小黑')    #insert在指定位置添加元素
print('修改之前的:', stu_name)

 

#编程里面写代码都是和内存打交道的,变量都是存在内存的,运行一次结束后就销毁一次。不然内容会被沾满。
#cpu <---> mem <---> disk,mem中的数据,一重启就没了,要长久保存,就需要保存到disk


#改

stu_name[5] = '小胖'
print('修改之后的:', stu_name)

 

#删

stu_name.append('小黑')   #先增加
print(stu_name)
stu_name.remove('小黑')   #如果有一样的元素,只会删除第一个,若想都删除,则应当写循环
print(stu_name)
stu_name.pop(1)   #.pop删除元素,默认删除列表最后一个元素。
print('删除后的列表:', stu_name)
stu_name.pop(4)   #删除指定下标的元素,
print('删除指定下标的元素:', stu_name)
stu_name.remove('托尔斯泰')   #删除指定的元素
print('删除指定的元素:', stu_name)
stu_name.pop(18)     #删除不存在的元素,会报错,下标越界
print(stu_name)
del stu_name[-1] #-1代表删除最后一个元素,-2代表倒数第二个
print(stu_name)

 

#查

my_list = ['小黑','小白','小爱',1,2.2,1,1.5]
print(my_list[-1])
print(my_list[0])
print(my_list.count(5)) #查询某个元素在list里面出现的次数,若不存在的元素则输入为0,。
print(my_list.count(1))
print(my_list.count('小黑'))
print('index方法:',my_list.index(1)) #查找元素的下标,若查找元素不存在的话,会报错
print('reverse方法:',my_list.reverse()) #反转的意思,将list反转,无返回值,直接打印reverse结果为none。
print(my_list)
# my_list.clear() #清空整个list
# print(my_list)

 

nums = [9,7,6,5,5.6,9.9,-1,-3,0]
nums.sort() #升序排序
print('sort 升序排序:',nums)
nums.reverse()
print('reverse 反转后降序排序:',nums)

#如果指定了reverse则是降序
nums.sort(reverse = True)
print('指定了reverse,降序排序:',nums)

#把一个list里面的元素加入进去
nums.extend(my_list)
print('把一个list里面的元素加入nums:',nums)

 

#相加

nums = nums + my_list
print(nums)

 

#直接两个list直接相加

new_list = nums + my_list
print(new_list)
#也可以使用乘法,乘以几就代表复制几份
print(new_list*3)

=======================================List 切片操作-==================================

#切片就是list的取值的一种方式

l1 = list(range(1, 11))   #顾头不顾尾,打印 l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
l2= ['a','b','c','d','e','f','g','h','i','j','k','l','m','n']
#下标 0 1 2 3 4 5 6 7 8 9 10 11 12 13
print(l)
print(l[0:3]) #打印出 [1, 2, 3]
print(l[:5])  #如果最前面没写,代表从0开始取
print(l[4:])  #如果冒号后面的没有写,代表取到最后
print(l[::2]) #步长为2,代表从头到尾,隔两个取一次值

 

#取100以内的偶数

# 1 2 3 4 5 6 ……100
nums = list(range(1,101))[1::2]
print(nums)

 

#取100以内的奇数

nums2 = list(range(1,101))[::2]
print(nums2)

 

#如果最后面的步长是正数,那就从左到右取值
#如果最后面的步长是负数,那就从右到左开始取值

nums3 = list(range(1,101))[::-2]
print(nums3)
print(list(range(1,101))[::-1]) #1到100倒序

 

#切片同样适用于字符串

words = '中秋节要上课!'
print(words[6])
print(words[::-1])
print(words[::2])

for w in (words):
  print(w)

for index,w in enumerate(words):
  print('每次打印的',index,w)

 

#小练习:判断一个输入的字符串是否是回文(正读和反着读都是一样的,例如:123321等)
s = '上海自来水来自海上'
#回文算法 反过来倒过去都一样
#5678 8765

for i in range(10):
    s = input('请输入一个字符串:')
    if len(s) <= 1:
        print('字符串长度必须大于1!')
    elif s == s[::-1]:
        print("是回文")
    else:
        print("不是回文")    

=======================================元组-==================================

mysql = ('118.24.3.40',3306,'root','123456')
#元组也是一个列表,与列表唯一的区别是:元组是不可变列表,不能修改。只可以访问或者调用。
# mysql[1] = 3307
# print(mysql)  #报错不能修改:TypeError: 'tuple' object does not support item assignment
mysql = ('211.20.28.65',6739,'sasaa') #若要修改,只能重新定义
 print(mysql[:3])
 for m in mysql:
     print(m)

mysql.count()
mysql.index()

#当元组中只有一个元素时,必须加一个逗号,不然会变成变量定义,例如t=(1),其类型为int,t=('a'),其类型为str
l = [1]
t =('a',)
print(type(l))
print(type(t))

#括号提升优先级
if(1+2)*3 > 5:

=======================================字典操作-==================================

#使用字典,k-v的形式。优点:(1)访问速度很快;(2)好取值,因为无下标,直接用k来获取v

#定义一个空字典

stus ={ }

#增

#增加,方法一和方法二的区别:如下

#方法一
stus['name']='小军'  #k=name,v=小军
stus['name']='hailong' #对name重新赋值,name此时等于hailong
stus.setdefault('name','杨帆')  #如果这个key已经存在,name就不修改它的值了。此时name还是hailong。
#方法二
stus.setdefault('age',18)
stus.setdefault('sex','nan')
stus.setdefault('addr','北京')
stus.setdefault('phone',18222222222)
print(stus)

#改

#修改,再一次赋值即修改
stus['name']='hailong'
#update
stus.update({'money':1000})
print(stus)

 

#删

#删除
print(stus)
del stus['phone']
stus.pop('sex')
stus.popitem() #随机删除
print(stus)

#查

#查询
#print(stus['name']) #若不存在name,直接报错
print(stus.get('name')) #若不存在name,不会直接报错,返回none。
print(stus.get('name2','dada')) #如果没有name2,则新增name2,赋值dada
print(stus)

case ={
    'url':'http:www.baidu.com'
    'method':'get'
}


#获取所有的值
print(stus.keys())
print(stus.values())

#循环

#循环方法一
for k in stus:
    print(k,'====>',stus.get(k))

#循环方法二
for k,v in stus.items():
    print(k,'===>',v)

#字典的嵌套取值

#---------------------------------------
#如何让一个字典里面存下所有的学生信息
#使用字典嵌套
#下面是字典嵌套的取值
all_stus ={
    'xiaojun':
        {
            'name':'xiaojun',
            'sex':'',
            'shengao':185,
            'age':18,
            'email':'aa@qq.com',
            'addr':'dadadad',
            'id':1,
            'cars':['牧马人','911','野马','劳斯莱斯',]
        },
    'hailong':
        {
            'name': 'xiaojun',
            'sex': '',
            'shengao': 185,
            'age': 18,
            'email': 'aa@qq.com',
            'addr': 'dadadad',
            'id': 1
        },
    'yangfan':
        {
            'name': 'xiaojun',
            'sex': '',
            'shengao': 185,
            'age': 18,
            'email': 'aa@qq.com',
            'addr': 'dadadad',
            'id': 1,
            'bags':{
                'qianbao':['lv','ysl'],
                'beibao':['coach','abc']
            }
        }
}
#再加一个五菱宏光
all_stus['xiaojun']['cars'].append('五菱宏光')
print(all_stus)
print(len(all_stus['xiaojun']['cars']))

#修改yangfan性别
all_stus['yangfan']['sex'] = ''
print(all_stus)

#删除qianbao
all_stus['yangfan']['bags']['qianbao'].remove('lv') #也可以使用pop
print(all_stus)    
    

=======================================字符串常用操作-==================================

#------------------字符串常用方法---------------------
password = '  123456\n456789  '
print(password.strip()) #默认去掉字符串两边的空格和换行符,中间的换行符及空格照样存在
print(password)


password2 = '.jpg  1234567  .jpg  ABCDEF'
print(password2.strip('.jpg'))    #默认去掉.jpg
print(password2.lstrip())  #去掉左边
print(password2.rstrip())  #去掉右边

password3 = password2.strip('.jpg')
print('password3:',password3)
print(password2.upper())  #转化为大写,登录验证码时用到
print(password2.lower())  #转成小写,登录验证码时用到
print(password2.capitalize())  #把首字母改成大写的
print(password2.count('jpg'))  #输出jpg在password2中出现几次
print(password2.replace('12345','上山打老虎'))   #把12345替换成“上山打老虎”
print(password2.replace('SSSS','替换不存在'))    #假设替换的内容不存在,就无结果,不会报错


#布尔类型,要么条件成立,返回True,要么条件不成立,返回False。
filename = 'a.mp3'
print(filename.endswith('.mp3'))  #返回true 或 false,判断是否已xx结尾
print(filename.startswith('186')) #判断是否以xx开头

if filename.endswith('.mp3'):
    pass
else:
    print('……')

print('{name},{age}'.format(name='hhh',age='22'))  #formate 用大括号站位


#一串内容按照某一元素分割
names = '小军,海龙,杨帆,谭爱林'
print(names.split(','))  #1、是把字符串变成list, 2、以某个字符串分割,分割之后的是list里面的每一个元素

names2 = '小军 海龙 杨帆   谭爱林'
print(names2.split())

print(names2.replace(' ',''))  #去除中间空格

 


posted @ 2018-09-07 10:51  A_Life  阅读(677)  评论(0编辑  收藏  举报