Python字符串、字典、list的学习

1、list的操作

   1.1、list的常用方式 

   查看元素是否在list里,有两种方法:一种是最原始的实现原理,另一种是用list方法,下面介绍:

     方法一:【最原始的方法】

passwords = ['123456','123123','7891234','password']
count = 0
while count < len(passwords):
    s = passwords[count]
    print('每次循环的元素:',s)
    count += 1

     方法二、用list:

passwords = ['123456','123123','7891234','password']
for p in passwords:
    print('每次循环的元素:',p)

实现同一样方法,应该选择使用最少的代码

同样,如果想获取list里的key/value,还可以选择使用下面常用的方法:enumerate自动的将每次循环都会自动计算下标以及对应的元素

passwords = ['123456','123123','7891234','password']
for index,p in enumerate(passwords): #enumerate是一个枚举函数
    print('enumerate每次循环的时候:',index,p)
print(passwords)

   1.2、list的切片操作,切片是对list的一种取值方式

     ①、两个例子说明

l=['a','b','c','d','e','f','g','h','i','j']
print(l[0:4])  #取a~d时候。切片操作顾头不顾尾的。
print(l[2:8])
print(l[:5])  #如果:前面不写,代表从0开始取得,等同于 l[0:5]
print(l[2:])  #如果:后面不写,代表取到最后一个元素,等同于l[2:9]

print(l[0:8:2])  #最后一个数叫做步长,就是每2个步长取一次。
print(l[::3]) #对于整个list,每3个步长取一次
          如果最后面的步长是正数的话,那就从左到右开始取值;如果最后面的步长是负数的话,那就从右往左开始取值
num = list(range(1,101))
print(num[1::2])  #取偶数
print(num[::2])  #取奇数
print(num[::-2])  #倒着取偶数

PS:切片同样适用于字符串。回文算法:正过来,反过来都是一样的。例如:'上海自来水来自海上',校验是否是回文算法,代码如下:

for i in range(3):
    m = input('请输入字符串:')
    if len(m) >1:
        if m == m[::-1]:
            print('是回文')
        else:
            print('不是回文')
    else:
        print('输入长度至少大于1')

2、list的增删改查

增:stu_name = ['cuicui','yangyang','liuxin','lrr','xiaoli'],适用于以下的增删改查:

stu_name.append('李大头') #list里面添加元素,默认在最后一个位置(末尾)添加。
stu_name.insert(2,'小王') #指定位置的添加元素
stu_name.insert(2,'老王') #指定位置的添加元素
stu_name.insert(7,'老王') #指定位置的添加元素,可以多次添加同一个元素,一次只能添加一个元素。

删:

stu_name.pop() # 删除元素,默认删除最后一个。
stu_name.pop('99') #指定一个不存在的下标时候:会报错:'str' object cannot be interpreted as an integer
stu_name.pop(4) # 删除元素,指定下标删除
stu_name.remove('小王') # 删除元素,指定元素删除,只能一个一个的删除。
stu_name.remove('老王') # 删除元素,指定元素删除,如果存在两个一样的元素,默认先小下标删除
del stu_name[-1]  #删除最后一个。
del stu_name[-2]  #删除倒数第二个。 #下标为正,从前面数,下标为负数,倒数。

改:

stu_name[6]='小头爸爸'

查:

print(stu_name[0]) #指定下标来取值
print(stu_name[-1])

list的一些其他常用方法:

my_list = ['小黑','小白',1,1,2,1.5]
print(my_list.count(1))
print(my_list.count(5)) #判断有没有重复时候
print('index方法1:',my_list.index(1)) #查找元素的下标,有重复的元素,默认返回第一个下标。
print('index方法2:',my_list.index(99)) #查找元素的下标,当元素不存在时候,报错:ValueError: 99 is not in list
my_list.reverse()  #该方法无返回值。
print('reverse方法:',my_list) #list里元素反转。
my_list.clear()  #清空list里元素。
my_list=[9,9.2,4,77,1,22,3,1]
my_list1 = ['小黑','小白',1,1,2,1.5]
my_list.sort()  #sort只针对同种类型数据排序。从小到大。
my_list.reverse()  #可以在sort()后用,相当于从大到小
my_list.sort(reverse=True) #从大到小排序
new_list = my_list + my_list1  #这是两个list合并,但不会更新这两个list。
new_list = my_list * 3  #生成了一个复制3遍的list。
my_list.extend(my_list1)  #把一个list里元素加入进去。相当于合并了两个list,改变了my_list

3、字典的介绍与使用

字典:天生去重,查询速度快,key与value成对出现,无序的。举例:适用于下面字典的增删改查

xiaojun = {
    'name':'xiaojun',
    'sex':'男',
    'shengao':180,
    'age':19,
    'email':'fad@qq.com',
    'addr':'火星',
    'id':1,
}

增:

xiaojun['zhuzhi'] = '洛杉矶' #给字典新增一个key
xiaojun['addr'] = '洛杉矶' #给字典新增一个key,如果已经存在,就会覆盖
stu.setdefault('name','杨洋')
stu.setdefault('age',18)  #添加,如果key不存在,age的值就是18,
# 如果key存在,就保留原始的值。

删:

xiaojun.pop('id')  #必须指定对应的key,否则报错。
xiaojun.clear()  #清空字典
xiaojun.popitem()  #随机删除某一个k,很少使用
del xiaojun['age']  #删除指定的key

改:

stu['name']='hailong'

查:

print(xiaojun['sex'])
print(xiaojun['住址']) #key不存在会报错,为避免报错
print(xiaojun.get('sex'))  #如果key存在,就返回对应的值
print(xiaojun.get('住址'))  #如果key不存在,就返回None
print(xiaojun.get('住址','日本'))
# #如果key不存在,我们也可以手动设置默认值,就返回默认值
print(xiaojun.values())  #返回一个list
print(xiaojun.keys())  #返回一个list

字典的使用:

all_stus = {
        'xiaojun':{
        'name':'xiaojun',
        'sex':'男',
        'shengao':180,
        'age':19,
        'email':'fad@qq.com',
        'addr':'火星',
        'id':1,
    },
    'xiaowang': {
        'name': 'xiaowang',
        'sex': '男',
        'shengao': 180,
        'age': 19,
        'email': 'fad@qq.com',
        'addr': '火星',
        'id': 2,
        'cars':['五菱宏光','劳斯拉斯','法拉第','宝马']
    },
    'xiaoli': {
        'name': 'xiaoli',
        'sex': '男',
        'shengao': 180,
        'age': 19,
        'email': 'fad@qq.com',
        'addr': '火星',
        'id': 3,
        'bags':{
            'qianbao':['lv','ysl'],
            'beibao':['coach','abc']
        }
    }
}

# 查到lv包
print(all_stus['xiaoli']['bags']['qianbao'][0])
#车里插入一个奥迪
all_stus['xiaowang']['cars'].append('奥迪')
print(all_stus['xiaowang']['cars'])
#删除coach
del all_stus['xiaoli']['bags']['beibao'][0]
print(all_stus['xiaoli']['bags']['beibao'])

4、字符串的常用的一些方法

字符串与元祖不能修改

所以这里介绍字符串的常用方法

passwords = '   aAbbD123456.jpg\n '
print('passwords:',passwords)
print(passwords.lstrip()) #字符串左边去掉空格与换行符
print(passwords.rstrip()) #字符串右边去掉空格与换行符
print(passwords.strip())  #去掉字符串两边的空格与换行符,中间的换行符是去不掉的。
print(passwords.strip('.jpg')) #去掉字符串两边的指定的字符,但是并不修改字符串本身的值。
passwords = 'aAbbD123456.jpg\n '
print(passwords.upper()) #将字符串改为全大写。
print(passwords.lower()) #将字符串改为全小写。
print(passwords.capitalize())  #首字母大写
print(passwords.count('Addb'))  #某元素在字符串里出现了多少次
print(passwords.replace('12345','上山打老虎')) #用新的字符串替换老的字符串
print(passwords.replace('大头','上山打老虎'))  #如果old不存在,返回原字符串
filename = 'a.mp4'
#上传文件时候,常常校验文件名以什么结尾
print(filename.endswith('.mp3'))  #以。。结尾
phone = '18612346789'
print(phone.startswith('186'))  #以什么开头

names = 'zhangyixing,wuyifan,yangyang,liyifeng'
print(list(names))
print(names.split(','))  #1、将字符串转换为list,
# 2、按照逗号分隔,分隔之后放到list里
#.join()方法。join方法不仅仅能够连接list里的元素,只要是能够循环的元素都可以用join方法。
#作用:1、把list变成了字符串,
   # 2、把list里的每一个元素用逗号连接起来
s = 'abcdef'
users = ['username','user3','user2']
res = ','.join(users)  #将list里的元素用,连接
res = '?'.join(users)  #将list里的元素用?连接
res = '?'.join(s)  #将字符串里的元素用?连接

#s.find() 与s.index()
#都是找元素的下标的,先分别用它们找存在的元素,再走下不存在的元素
s = 'abcdef'
print(s.find('f'))#二者找存在的元素是一样的返回结果,返回下标。
print(s.index('f'))
print(s.find('m')) #二者找不存在的元素时候,find(x)会返回-1,而index(x)会报错
print(s.index('m'))

print(s.isdigit()) #判断是否为正整数,包括0
print('123'.isdigit()) #判断是否为正整数,包括0
print('0'.isdigit()) #判断是否为正整数,包括0
print('12.3'.isdigit()) #判断是否为正整数,包括0
print(s.islower()) #判断是否都是小写字母
print(s.isupper()) #判断是否都是大写字母
print('Abc'.islower())
print('abc123'.isalnum()) #判断字符串里面有英文或者数字
print('abc123'.isalpha())  #字符串里只能有字母,都是字母才返回true
print('\n'.isspace())  #判断是否是空格与换行符
#目前字符串里没有判断是否是小数的方法。
print('3aa'.isidentifier()) #判断是否是合法的变量名。
print('_aa'.isidentifier()) #判断是否是合法的变量名。


import string
print(string.ascii_letters)  #所有大小写字母
print(string.ascii_lowercase)  #所有小写字母
print(string.ascii_uppercase)  #所有大写字母
print(string.punctuation)  #特殊字符
print(string.digits) #所有的数字

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值