day6笔记

一、上节回顾

list:li = [1,2,3,5,'a']
增加:append:末尾加入==追加
insert:插入,在任意位置,insert(index,'内容')
extend:迭代着加入,'asc' ----> ‘a’,‘s’,‘c’ [1,2,3] ---->1,2,3
删除:pop 按索引删除,有返回值
remove:按元素删除
del:del li[0] del li[1:4] del li
clear:清空
改:li[0] = 'fdfgdg' li[1:3] = 'abcd' li = [1,a,b,c,d,5,'a']
查询:按索引,切片,for while等都可以查出。
方法:count 没有切片
sort:从小到大,正序,sort(reverse = True)倒叙排序
reverse:反转
index:找出元素的索引位置 可以切片
li = [1,2,[3,4,'taibai','a'],3,5,'a']
li[2][2]=li[2][2].captize

2,:元祖。只读,不能更改,儿子不能改,孙子可以改。
可以切片。
3,:range(4,12) = [4,5,。。。。11] 生成指定数字范围的生成器

二、作业收藏:

4,请用代码实现: 
       li = [‘alex’,’eric’,’rain]
利用下划线将列表的每一个元素拼接成字符串"alex_eric_rain"
'''
#format
方法一:
li = ['alex','eric','rain']
# info = '{}_{}_{}'.format(li[0],li[1],li[2])
# print(info)
方法二:
# li = ['alex','eric','rain']
# msg = ""
# is_first = True
# for item in li:
#     if is_first:
#         msg = item
#         is_first =False
#     else:
#         msg += "_" + item
# print(msg)
方法三:
# li = ['alex','eric','rain']
# sb=''
# for i in li[1:]:
#     sb+='_'+i
# print(sb.lstrip('_'))
方法四:  join
# li = ['alex','eric','rain']
# str(li)
# temp = ''.join(li)
# print(temp)
#将str ---> list    split
#将list  ---> str   join
# s = 'alex'
# temp = '*'.join(s)  # 可迭代对象
# print(temp)
# li = [1,2]
# li = str(li)
# print(li[1],type(li[1]))
'''
5,查找列表li中的元素,移除每个元素的空格,
并找出以’A’或者’a’开头,并以’c’结尾的所有元素,并添加到一个新列表中,最后循环打印这个新列表。
li = [‘taibai ’,’alexC’,’AbC ’,’egon’,’ Ritian’,’ Wusir’,’  aqc’]
'''
:
# li = ['     taibai ','alexC','AbC ','egon',' Ritian',' Wusir','  aqc']
# l1 = []
# for i in li:
#    j = i.strip()
#    # if j[0].upper() == 'A' and j[-1] == 'c':
#    if j.startswith('A') and j[-1] == 'c':
#        l1.append(j)
#
# for k in l1:
#     print(k)
将敏感词换成****
# li = ["苍老师","东京热",'武藤兰','波多野结衣']
# new_li = []
# info = input('请输入你的评论')  # 苍老师,fdsa东京热
# for i in li:
#     if info.find(i) != -1:
#         l = len(i)
#         info = info.replace(i,'*'*l)   #***,fdsa东京热
# new_li.append(info)
# print(new_li)

"""
7,有如下列表li = [1,3,4’,alex’,[3,7,8,’taibai’],5,’ritian’]
循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。
我想要的结果是(用三种方法实现)
"""
另外还有两种用for和range的方法
li = [1,3,4,'alex',[3,7,8,'taibai'],5,'ritian']
for i in li:
    if type(i)==list:
        for k in i:
            print(k)
    else:
        print(i)
#2
li = [1,3,4,'alex',[3,7,8,'taibai'],5,'ritian']
for i in range(0,len(li)):
    if type(li[i])==list:
        for k in li[i]:
            print(k)
    else:
        print(li[i])
方法三:
li = [1,3,4,'alex',[3,7,8,'taibai'],5,2]
# print('********',li.index([3,7,8,'taibai']))
# new_li = []
# for i in li:
#     if type(i) == list:  # i == [3,7,8,'taibai']
#         index_list = li.index(i)  # index_list == li.index([3,7,8,'taibai']) == 4
# new_li = li[:index_list]  # new_li = [1,3,4,'alex',]
# new_li.extend(li[index_list])  # [1,3,4,'alex',].extend([3,7,8,'taibai'])
# #  new_li = [1,3,4,'alex',3,7,8,'taibai']
# new_li = new_li.extend(li[index_list+1:])  # li[index_list+1:] ==[5,2]
#new_li = [1,3,4,'alex',3,7,8,'taibai',5,2]
# for j in new_li:
#     print(j)
# li = [1,2,3]
# l2 = ['a','b','c']
# l3 = li+l2
# print(l3)
方法四来由:
l = [1,2,3,'4']
l[1] = ['2',3,'alex']
print(l) #[1,['2',3,'alex'],3,'4']   [1,'2',3,'alex',3,'4']
l[1:2] = ['2',3,'alex']
print(l)
方法四
li = [1,3,4,'alex',[3,7,8,'taibai'],5,2]
for i in li:            ####方法一
    if type(i) == list:
        index_list = li.index(i)  # 4  i = [3,7,8,'taibai']
        li[index_list:index_list+1] = i   #  li[4:5] = [3,7,8,'taibai']
        #  li = [1,3,4,'alex',3,7,8,'taibai',5,2]
        # print(i)
# for j in li:
#     print(j)
day5作业收藏

三、字典的讲解:

    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

  字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取

  总结:1,字典无序。2,数据关联性强,3键值对。唯一一个映射的数据类型。  

  字典的键必须是可哈希的(不可变的数据类型:字符串,数字,布尔值,元祖)并且是唯一的不可哈希的(可变的数据类型:列表,字典,set)

 增:

dic = {'name':'alex','age':19,'high':'175cm'}
#dic ['wight']='65kg'
#print(dic) # {'name': 'alex', 'age': 19, 'high': '175cm', 'wight': '65kg'}  第一种增加就是字典键值等于变量/
                        # 如果不存在此键值直接增加  ,如果存在就是修改该键对应的值
#dic['name'] = 'chao'
#print(dic)            # {'name': 'chao', 'age': 19, 'high': '175cm'}
#dic.setdefault('weight','60kg')
#print(dic)    #  {'name': 'alex', 'age': 19, 'high': '175cm', 'weight': '60kg'}
dic.setdefault('name',666)
print(dic)   #{'name': 'alex', 'age': 19, 'high': '175cm'}
# 总结:setdefault如果不写 参数会报错,只写k 会创建一对值是None的键值对,如果K存在则不会新增加列表

删:

#a = dic.pop('name')
#print(dic,a)         # {'age': 19, 'high': '175cm'} alex
#a = dic.pop('name','lll')
#print(dic,a,dic.pop('name','lll'))  #{'age': 19, 'high': '175cm'} alex lll
# 根据键值删除某一个元素,并返回删除的值,如果键值不存在那么返回  键值后的参数111  注:如果键值后没有参数并且该键值不存在则会报错
#a = dic.popitem()
#print(dic,a)   # {'name': 'alex', 'age': 19} ('high', '175cm')
# 任意删除字典中的某个键值对,并以元祖的形式返回
#del dic['name']
#print(dic)    # {'age': 19, 'high': '175cm'}   删除指定的键值对
dic.clear()  
print(dic)  # {} 清空字典

改:

#dic['name'] = 'chao'
#print(dic)  # {'name': 'chao', 'age': 19, 'high': '175cm'}  根键值直接修改
li = {'name':'chao',1:2}
dic.update(li)
print(dic,li) # {'name': 'chao', 'age': 19, 'high': '175cm', 1: 2} {'name': 'chao', 1: 2} 
              #  根据第二个列表更新第一个列表相同的键改变值为第二个。不存在的键值增加

查:

a = dic.get('name22')
print(a)   # None
a = dic.get('name22','')
print(a)   # 啥    用get根据键值 去查找值 如果不存在返回  None   或者设置值
a = dic['name22']  # 直接用键值去查找的时候不存在会报错
# print(dic.keys(),type(dic.keys()))        # dict_keys(['name', 'age', 'high']) <class 'dict_keys'>
# print(dic.values(),type(dic.values()))    # dict_values(['alex', 19, '175cm']) <class 'dict_values'>
# print(dic.items(),type(dic.items()))   # dict_values(['alex', 19, '175cm']) <class 'dict_values'>
# # 将键和值转化为列表
# #for 循环去 查找
# for i in dic:
#     print(i)  # 默认遍历的是字典的键 name    age    high
# for j in dic.keys():
#     print(j)  # 遍历所有键
# for k in dic.values():
#     print(k) # 遍历所有值
# for m,n in dic.items():
#     print(m,n) #遍历键和值 用啊 m,n 去接受
# m,n = (2,3)   # python 中变量的赋值可以用这种形式
# print(m,n)  # 2 3

 

原文地址:https://www.cnblogs.com/zjchao/p/7730103.html