Python-基本数据类型补充

目录

一.1ist在循环列表的时候不能全部删除,因为索引会改变

二.dict.fromkeys()    通过list来创建一个dict

dic中的元素在迭代过程中也是不允许进行删除的,如果要删除和列表一样把要删除的 元素先暂时保存在一个list[]中 ,然后循环list再删除

三.reverse()和reversed()的区别:


一.1ist在循环列表的时候不能全部删除,因为索引会改变

lst = ["alex", "wuse", "taibai", "ritian"]
for el in lst:
    lst.remove(el)    #删除之后list列表的索引在改变,循环项在增加
print(lst)      #会过掉一个人 结果为:['wuse', 'ritian']

分析原因:

for的运行过程.会有一个指针来记录当前循环的元素是哪一个,一开始这个指针指向第0个.然后获取到第0个元素.紧接着删除第0个.这个时候.原来是第一个的元素会自动的变成第0个.然后指针向后移动一次,指向1元素.这时原来的1已经变成了0,也就不会被删除了.

#此方法是在不使用clear的情况下
#lst = ["alex", "wuse", "taibai", "ritian"]
# del_lst = []       #给一个空列表
# for el in lst:
#     del_lst.append(el)  # 记录下来要删除的内容
# for el1 in del_lst:  # 循环记录的内容
#     lst.remove(el1)  # 删除原来的内容
# print(lst)      


lst = ["周杰伦", "周润发", "周星星", "马化腾", "周树人"]
# 删除掉姓周的人的信息
new_list = []    #给一个空列表
for el in lst:
    if el.startswith("周"):
        new_list.append(el)    #把姓周的记录下来添加到新的列表
for a in new_list:    #循环记录的列表
    lst.remove(a)   #删除原来列表中姓周的
print(lst)   

二.dict.fromkeys()    通过list来创建一个dict

  • 前面列表中的每⼀项都会作为key, 后面列表中的内容作为value. ⽣成一个dict

 

#跟创建的dic毫无关系
dic = {"a":123}
s = dict.fromkeys("王健林","旺达")
print(s)    #{'王': '旺达', '健': '旺达', '林': '旺达'}


dic = dict.fromkeys(["jay", "JJ"], ["周杰伦", "麻花藤"])
print(dic)    #{'jay': ['周杰伦', '麻花藤'], 'JJ': ['周杰伦', '麻花藤']}
dic.get("jay").append("胡⼤大")
print(dic)    #{'jay': ['周杰伦', '麻花藤', '胡⼤大'], 'JJ': ['周杰伦', '麻花藤', '胡⼤大']}

#注意:代码中只是更改了jay那个列表. 但是由于jay和JJ用的是同一个列表. 所以前面那个改了. 
#后面那个也会跟着改
  • dic中的元素在迭代过程中也是不允许进行删除的,如果要删除和列表一样把要删除的 元素先暂时保存在一个list[]中 ,然后循环list再删除

# 字典在迭代过程中不允许进行删除操作
dic = {"k1": "alex", "k2": "wusir", "k3": "金毛"}
dic_del_list = []
for k in dic:
    if 'k' in k:
        dic_del_list.append(k)
for el in dic_del_list:
    del dic[el]
print(dic)  # {}

三.reverse()和reversed()的区别:

reverse():是python中列表的一个内置方法(也就是说,在字典,字符串或者元组中,是没有这个内置方法的)用于列表中数据的反转 

lst = [1, 45, 6, 2, 56, 8]
lst.sort()    # 排序
print(lst)    # [1, 2, 6, 8, 45, 56]
lst.reverse()    # { reverse()顺序翻转  等价于[::-1] }
print(lst)    # 在排序后的基础上做的翻转 [56, 45, 8, 6, 2, 1]

reversed():reversed()是python自带的方法准确说应该是一个类。reversed()的作用之后,返回的是一个把序列值经过反转之后的迭代器

aa = 'asbdamfgh'
print(''.join(reversed(aa)))  # 不可套用str(reversed(aa))
# hgfmadbsa

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值