目录
二.dict.fromkeys() 通过list来创建一个dict
dic中的元素在迭代过程中也是不允许进行删除的,如果要删除和列表一样把要删除的 元素先暂时保存在一个list[]中 ,然后循环list再删除
一.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