列表/元组/切片/字典/字符串处理方法

Posted 风-fmgao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表/元组/切片/字典/字符串处理方法相关的知识,希望对你有一定的参考价值。

1、列表
stus=\'赵传慧,贾丹,段家林,刘伟,梁盼,刘艳\'

new_stus = [\'赵传慧\',\'贾丹\',\'张流量\',\'李wifi\',\'颜军田\']
#列表、list、数组、array
#下标、索引、角标、编号
print(new_stus[-1])
#最前面一个元素的下标是0,最后面一个元素的下标是-1
cities = []
#增
cities.append(\'北京\')  #在列表末尾增加一个元素
cities.insert(0,\'上海\') #在指定的位置增加元素
cities.append(\'广州\')
#删
cities.pop(0) #删除指定位置的元素
cities.remove(\'北京\')#删除指定的元素
cities.clear() #清空list
del cities[-1] #删除指定位置的
print(cities)
#修改
cities[1]=\'南京\' #修改的时候如果指定的下标不存在,会报错
print(cities)
# #查
print(cities[0])  #指定位置的
print(cities.index(\'广州\')) #获取元素的下标,如果找不到那个元素的话,会报错
print(cities.count(\'广州\'))  #查看元素在list里面出现了多少次

my_list = [\'python\',\'jmeter\',\'charles\',\'postman\']
print(my_list.reverse())  #就是把这个list反转一下
print(my_list)

nums = [9,2,34,12,34,457,2342]
nums = [\'b\',\'f\',\'e\',\'z\',\'g\',\'h\']
# nums.sort() #排序,升序
nums.sort(reverse=True) #排序,降序
print(nums)
cities2 = [\'深圳\',\'厦门\',\'成都\']

# print(cities+cities2)#合并list
print(cities*3) #复制几次
print(\'哈哈哈\'*3)
words = [\'view\',\'code\',\'tools\',[\'price\',\'num\',198,[\'hello\',\'usa\',\'吃鸡\']]   ] #二维数组

print(words[-1][-1][1])
print(words[-1][2])

names=[  [\'小黑\',[\'小绿\',138]],\'小红\',[\'小紫\',[\'小白\']]]
# print(names[-1][-1])
print(names[0][-1][-1])

list循环

lists = [
    \'张流量\',\'李wifi\',\'王路由器\',\'牛网线\',[1,2,3,4]
         ]
words=\'marry,lily,joker\'
# for i in range(4):  #其他语言
#     # 0 ,1,2,3
#     print(lists[i])

for name in lists:
    if type(name)==list:  #判断一个变量的类型
        for i in name:
            print(i)
    print(name)


# for name in words:
#     print(name)
#for循环在循环可迭代对象的时候,每次循环的是里面的每一个元素

list小练习:

# 校验用户名是否合法:
    # 输入账号       #input
    # 如果账号存在的,提示已经被注册,如果不存在的,就让他注册 all_users 【  】
    #不能为空          #strip()
    #用户名长度长度6-12之间 len()
    #最多输入3次     #循环

all_users =  [\'牛寒阳\',\'梁盼\',\'zhangwifi\']
for i in range(3):
    username = input(\'请输入账号:\').strip()
    if len(username)>5 and len(username)<13:
        if all_users.count(username)>0:
            print(\'这个名字太好啦,已经被注册啦!\')
        else:
            print(\'名字不错,赶紧注册吧!\')
            break
    else:
        print(\'用户名长度不合法!长度6-12之间!\')
else:
    print(\'失败次数过多\')
    
    
小练习2:

stus=[
      [\'小明\',\'未交\'],
      [\'小白\',\'已交\'],
      [\'小紫\',\'已交\'],
      [\'小红\',\'未交\'],
      [\'小绿\',\'未交\'],
      [\'小黄\',\'未交\'],
      [\'小黑\',\'已交\']
    ]
pass_list = [ ] #所有已经交作业的同学
fail_list = [ ] #没有交作业同学的名字
for stu in stus:
    status = stu[1] #状态
    name = stu[0] #名字
    if status == \'未交\':
        fail_list.append(name)
    else:
        pass_list.append(name)
print(\'未交作业的所有同学是 %s ,总共有 %s 个人\'%(fail_list,len(fail_list)))
print(\'已交作业的所有同学是 %s ,总共有 %s 个人\'%(pass_list,len(pass_list)))


2.元组

# 元组也是一个list,他和list的区别是,元组里面元素无法修改
# print(type(t))
# #试试 循环、切片、下标取值、修改值
# print(t[:1])
# print(t[3])
# # for i in t:
# #     print(i)
# print(t)
#如果元组里面 只有一个元素的话,那么你必须在这个元素后面加一个逗号
t = (1,2,4,5,6,7)
words=(1,)
words2=(\'abc\',)
print(\'t\',type(t))
print(\'words\',type(words))
print(\'words2\',type(words2))
print(t.index(2)) #找到元素的下班
print(t.count(2)) #找到元素的个数

3.切片

# 切片是list取值的一种方式
nums = [\'段佳林\',\'陈卫亮\',\'王占宇\',\'李博\']
        #  0        1       2         3
print(nums[1:3])

print(nums[0])
print(nums[1:3])  #顾头不顾尾
print(nums[1:]) #如果从某个下标开始取,取到末尾结束,那么末尾的下标可以省略不写
print(nums[:2]) #如果是从头开始取,取到后面某个下标结束,那么开头的下标可以不写
print(nums[:]) #取所有的

lis = list(range(1,21))
print(lis)
print(lis[::2]) #步长,隔几个取一次
print(lis[::-2]) #步长,隔几个取一次
#如果步长是正数的话,从左往右边开始取值
##如果步长是负数的话,从右边往左边开始取值
print(lis[::-1]) #反转list
print(lis)
print(lis[1::-1])
print(lis[:])
lis.reverse()  #改变了原来list的值
new_list = lis[::-1]  #产生了新的一个list,不会改变原来list的值
print(new_list)
print(lis)
#切片操作同样适用于字符串。
info = \'你好,今天天气很好\'
#        0 1 2 3 4 5 6 7 8
print(lis)
print(lis[:18:-1])
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
                                                                 #18 # 19

print(lis)
print(lis[::-2])
print(lis[::-1])
print(lis[:18:-1])  # -1倒序,开头没有取值,所以默认从20往左取值,取到18的下标(19),但不顾尾,所以19不取
s = \'hahaha\'
s = \'小黑\'
print(s)
print(s[0])
print(s[::-1])

4.字典:

# key  - value
# string list dict
#  1、取数据方便
# 2、速度快,
#查
# print(infos.get(\'phone\'))#取不到这个key的话,就是None
# print(infos.get(\'phone\',110))#如果取不到这个key的话,默认就是110
# print(infos[\'phone\'])#如果key不存在会报错
infos  =  {\'name\':\'张流量\',\'sex\':\'男\',\'addr\':\'火星\',\'age\':180}

#增
infos[\'phone\']=13611087045 #增加一个key
infos.setdefault(\'小金库\',\'2000w\')
infos.setdefault(\'name\',\'鹏妹妹\') #如果key存在的话,不会修改原来key里面的值
infos[\'name\']=\'鹏妹妹\' #如果key存在的话,会修改原来key对应的value
# print(infos)
#字典是无序的

#修改
infos[\'name\']=\'鹏妹妹\'

#删除
# infos.pop(\'name\') #指定key来删除
# infos.popitem() #随机删除一个key
# del infos[\'phone\'] #指定key来删除
# infos.clear()  #清空字典

#方法
# print(infos.values())#获取到字典所有的value
# print(infos.keys()) #获取到字典所有的key
# print(infos.items()) # 获取字典所有的k-v

people = {
    \'田雨\':{
        \'age\':18,
        \'money\':200000,
        \'clothes\':\'100套\',
        \'hzp\':\'n多\',
        \'shoes\':[\'nike\',\'addis\',\'lv\',\'chanle\']
    },
    \'张流量\':{
        \'金库\':\'2000w\',
        \'house\':[\'三环一套\',\'4环2套\'],
        \'cars\':    {
                \'japan\':[\'普拉多\',\'兰德酷路泽\'],
                \'usa\':[\'林肯\',\'凯迪拉克\',\'福特\'],
                \'china\':[\'五菱宏光\',\'qq\',\'红旗\']
            }
    }
}
people[\'张流量\'][\'cars\'][\'usa\'].append(\'牧马人\')

# people[\'田雨\'][\'shoes\'].append(\'匡威\')
# print(people)
# people[\'田雨\'][\'money\'] = people[\'田雨\'][\'money\']+200
# people[\'田雨\'][\'money\'] += 200
# print(people)
#直接循环一个字典的话,那么循环的是字典的key
# for p in people:
#     print(p)
for k,v in people.items():  #循环的时候,同时取key和value
    print(k,\'======》\',v)
    
5.字典练习:

users = {
    \'niuhanyang\':\'123456\',
    \'yangyafu\':\'456789\',
}
#所有的账号和密码
# username
# pwd
# cpwd
# print( \'123456\' in users )   #字典里面用in来判断的话,只是判断key是否存在
for i in range(3):
    username = input(\'账号:\').strip()
    passwd = input(\'密码:\').strip()
    cpasswd = input(\'密码确定:\').strip()
    if username==\'\' or passwd==\'\' or cpasswd==\'\':
        print(\'用户名/密码不能为空\')
    elif username in users:
        print(\'用户名已经被注册!\')
    elif passwd!=cpasswd:
        print(\'两次输入的密码不一致\')
    else:
        print(\'恭喜,注册成功!\')
        # users.setdefault(username,passwd)
        users[username]=passwd
        break
else:
    print(\'错误次数过多\')
print(users)

作业1:

# 第一个作业
# 1、校验密码是否合法的程序。
#     输入一个密码
#     1、长度5-10位
#     2、密码里面必须包含,大写字母、小写字母和数字
#     # http://www.nnzhp.cn/archives/160 取交集的这种方式可以实现
#     3、最多输入5次
capital={\'A\',\'B\',\'C\',\'D\',\'E\',\'F\',\'G\',\'H\',\'I\',\'G\',\'K\',\'L\',\'M\',\'N\',\'O\',\'P\',\'Q\',\'R\',\'S\',\'T\',\'U\',\'V\',\'W\',\'X\',\'Y\',\'Z\'}
minuscules={\'a\',\'b\',\'c\',\'d\',\'e\',\'f\',\'g\',\'h\',\'i\',\'g\',\'k\',\'l\',\'m\',\'n\',\'o\',\'p\',\'q\',\'r\',\'s\',\'t\',\'u\',\'v\',\'w\',\'x\',\'y\',\'z\'}
number={\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\',\'0\'}
password=[]

for i in range(5):
    pwd=input("请输入密码:").strip()
    long=len(pwd)
    password = set(pwd)
    if long > 10 or long<5:
        print("密码长度需要在5-10位之间")
    elif password & capital == set() or password & minuscules == set() or password & number == set():
        print(\'密码里面必须包含,大写字母、小写字母和数字\')
    elif pwd == \'\':
        print("请输入密码:")
    else:
        print("您输入的密码合法")

作业2:

#二维字典的插入和读取
#写一个程序根据输入进行录入学生信息或查看作业情况

homeworks = {
    \'张流量\':{\'2018.3.22\':\'未交\',\'2018.3.23\':\'未交\'},
    \'田雨\':{\'2018.3.22\':\'未交\',\'2018.3.23\':\'未交\'},
}
for i in range(3):
    choice = input(\'请输入你的选择:\\n\'
                   \'1、录入学生作业情况\\n\'
                   \'2、查看作业情况\\n\')
    if choice==\'1\':
        name = input(\'学生姓名:\')
        date = input(\'日期:\')
        status = input(\'是否作业:\')
        if name==\'\':
            print("请输入姓名")
        else:
            homeworks.setdefault(name,{})
            homeworks[name][date]=status
            print(\'录入成功!您录入的信息为:\'
                  \'%s:%s:%s\' %(name,date,status))
    elif choice==\'2\':
        for k, v in homeworks.items():  # 循环的时候,同时取key和value
            print(k, \':\', v)
    else:
        print(\'输入错误\')
print(\'您的输入已达到三次,系统自动退出\')

原博文地址:https://www.cnblogs.com/lilyzhang-2018/p/8667095.html        
   

以上是关于列表/元组/切片/字典/字符串处理方法的主要内容,如果未能解决你的问题,请参考以下文章

python数据集

字符串处理之下标和切片

多测师拱墅校区肖sir_高级金牌讲师_python 的切片,字符,列表,元组,字典,集合

python中字符串列表元组字典每个常用的5个方法

列表 字典 元组 集合

列表元组字符串切片和字典的基本操作