python基础-day05

关于作业:老师说,要改掉C里面喜欢在前面加变量进行判断的习惯,在python里面用for就很好,

这里用两种方式,清除空白字符,python里面要改为第一种方式,

li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir','  aqc']
# for x in range(len(li)):
#     li[x] = li[x].strip()
#     print(li[x])
n = len(li)
m = 0
while m<n:
    li[m]=li[m].strip()
    m+=1

lis = [2,3,‘k’,[‘qwe’,20,[‘k1’,[‘tt’,3,’1’]],89],’ab’,’adv’]
1)将列表lis中的’tt’变成大写(用两种方式)。
lis[3][2][1][0]=lis[3][2][1][0].upper()	#ok
两种方式的意思是,通过直接赋值,或者upper()函数等方式,别想太多。
li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir','  aqc']
l1 = []
for i in li:
    i = i.strip()
    if i[0].upper() == 'A' and i[-1] == 'c':
        l1.append(i)
print(l1)
l1 = []
for i in li:
    i = i.strip()
    if (i.startswith('A') or i.startswith('a')) and i.endswith('c'):
        l1.append(i)
print(l1)
#题目是判断以字母A或a开头的,并且以c结尾,因为字符串的比如upper()并不改变原有值,所以第一种更简洁,学习了!!!

replace默认是替换所有,若是替换所有你在指定数量,就多余了,

    def replace(self, old, new, count=None): # real signature unknown; restored from __doc__
        """
        S.replace(old, new[, count]) -> str
        
        Return a copy of S with all occurrences of substring
        old replaced by new.  If the optional argument count is
        given, only the first count occurrences are replaced.
        """
        return ""



        key-value
        储存大量的数据,而是关系型数据,查询速度快,因为是哈希的,哈希的结果是有唯一对应的值

        数据类型分类:
            可变数据类型(不可哈希):list,dict,set。
            不可变数据类型(可哈希):int,bool,str,tuple.
                字典的键:不可变数据类型。
                字典的值:任意数据类型。
            容器类型:
                容器类(承载各种数据类型):list,tuple,dict。.
        字典的键是唯一的。
        字典的顺序:
            3.5之前,字典是无序的。
            3.6开始,字典创建的时候,按照一定的顺序插入的数值,看起来是有序的。


字典定义的时候,重复的key,后者的值会覆盖前者,

dic = {"name":"jin",
       "age":18,
       "sex":"male",
       }
# dic['hobby'] = 'girl'   #前面有hobby,就是修改,没有就是添加一个新的
# dic.setdefault('name','foot')   #有则不变
# dic.setdefault('hobby','foot')  #无则添加
#print(dic.pop('name'))      #删除并返回对应的值
#print(dic.pop('TUTU'))      #若是pop不存在的key,就会报错,
# print(dic.pop('TUTU','return'))     #需要我们手动指定一个值,就不会报错了,
#dic.clear()     #清空字典了,
# del dic     #删除字典,后面再打印就会报错
# del dic['name']     #删除某个,若是不存在会报错
# print(dic.popitem())    #多次运行,结果会不一样,

dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic2.update(dic)  # 将dic键值对,覆盖并添加到dic2
# print(dic)
print(dic2)
#打印dic2结果是{'sex': 'male', 'age': 18, 'name': 'jin', 'weight': 75},
#总结,用dic来更新dic2,dic2中有的key,就更新它的值,没有的key,就添加进来

print(dic.get('name1','咩有此键值对'))  # 默认返回None,通过[]访问的话,没有就会报错,

# 字典的三个方法,keys(),values(),items()
print(dic.keys(),type(dic.keys()))

li = list(dic.keys())       #直接把key转化为列表,

a,b = 2,3
print(a,b)
a,b = (2,3)
print(a,b)
a,b = [2,3]
print(a,b)

a = 4
b = 5
a,b = b,a
print(a,b)

for k,v in dic.items():
    print(k,v)

#字典的嵌套,pass吧,感觉没必要再贴了,


# print(dic.popitem())    #多次运行,结果会不一样,
#这里再多说点,py3.5以前,因为字典是无序的,所以这个返回是不一样的,
# 但是3.6以后,优化了,“有点顺序了”,所以就返回最后一个值了,


dic = {"name_list":['张三','lisi','隔壁王叔叔'],
       'dic2':{'name':'太白','age':12},
       }
# 1 ,给列表追加一个元素:'旺旺'
l1 = dic['name_list']
l1.append('旺旺')
print(dic)
#运行结果,
#{'dic2': {'age': 12, 'name': '太白'}, 'name_list': ['张三', 'lisi', '隔壁王叔叔', '旺旺']}
#这里可以体现列表是全局可用的吗?

关于这个列表,全局,可变,等再补充说明,

>>> l = ['s', 's', 's', 's']
>>> l1 = l
>>> l2 = ["123"]
>>> id(l)
2585132304712
>>> id(l1)
2585132304712
>>> id(l2)
2585132973512
>>> l2 = l1
>>> id(l2)
2585132304712
>>> #打印的id值,除了第三个,其它3个都一样
>>> #这里提出两个点,一个是引用,一个是新创建,
>>> #像开始的l1就是对l的引用,所以id一样,
>>> #l2是单独创建的,所以id不同于l和l1,
>>> #之后l2又引用了l和l1的共同引用的对象,所以这时的id和他们一样


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值