初识python(七)
程序员文章站
2022-06-23 23:51:04
可变与不可变 可变与不可变是针对数据类型而言的 按照存值个数划分 存一个值(数字型/字符串),存多个值(列表/字典) 数字类型不可变 列表可变,在原来的内存空间追加值 总结: 可变:列表、字典 不可变:数字、字符串 列表内置方法 索引取值/索引修改值 索引切片 成员运算 in / not in fo ......
可变与不可变
可变与不可变是针对数据类型而言的
按照存值个数划分
存一个值(数字型/字符串),存多个值(列表/字典)
x = 1 # 定义变量就会开辟一块新的内存空间存放变量 print(id(x)) # 140718444700496 x = x + 1 print(id(x)) # 140718444700528
数字类型不可变
lt = [1] print(id(lt)) # 2755985236680 lt.append(2) print(id(lt)) # 2755985236680
列表可变,在原来的内存空间追加值
总结:
- 可变:列表、字典
- 不可变:数字、字符串
列表内置方法
索引取值/索引修改值
lt = [1,2,3,4] print(lt[0]) # 1 lt[0] = 5 print(lt) # [5,2,3,4]
索引切片
lt = [1,2,3,4] print(lt[0:2]) # [1,2]
成员运算 in / not in
lt = [1,2,3,4] print(2 in lt) # true print(9 not in lt) # true
for循环
lt = [1,2,3,4] for i in lt: print(i) # 打印结果: 1 2 3 4
len长度
lt = [1,2,3,'cwz',[1,23]] print(len(lt)) # 5
append() 追加值
lt = [1,2] lt.append(3) print(lt) # [1,2,3]
sort() 排序
lt = [2,3,1,9,7] lt.sort() print(lt) # [1,2,3,7,9] lt = ['cw','ae','pf'] lt.sort() print(lt) # ['ae', 'cw', 'pf'] 按照单词第一个字母顺序排序
reverse() 反转
lt = [2,1,3] lt.reverse() print(lt) # [3,1,2] 列表顺序反转
index() 获取元素索引
lt = [1,2,3,4] print(lt.index(2)) # 打印1
clear() 清空列表
lt = [1,2,3] lt.clear() print(lt) # [lt]
copy() 复制
lt1 = [1,2,3] lt2 = lt1.copy() print(lt2) # [1,2,3]
extend() 扩展列表
lt1 = [1,2,3] lt2 = [4,5,6] lt1.extend(lt2) print(lt1) # 打印:[1, 2, 3, 4, 5, 6]
remove() 移除
lt = [1,2,3] lt.remove(3) print(lt) # 打印 [1,2]
insert() 按照索引插入值
lt = [1,2,3,4] lt.insert(1, '666') print(lt) # 打印结果: [1, '666', 2, 3, 4]
总结:
列表内置方法 | 用法 |
---|---|
append() | 追加值 |
sort() | 列表元素数字从大到小排序;列表元素字母按拼音是顺序排序 |
reverse() | 列表顺序反转 |
extend() | lt1.extend(lt2) 列表扩展 |
clear() | 清空列表 |
insert() | 按照索引插入值 |
remove | 移除列表指定值 |
copy() | lt.copy() 复制列表 |
index | lt.index(列表元素) 获取元素索引 |
字典内置方法
按key取值 / 按key修改值 / 按key增加值
dic = {'a':1, 'b':2, 'c':3} print(dic['a']) # 1 dic['a'] = dic['a'] + 9 print(dic) # {'a': 10, 'b': 2, 'c': 3} dic['d'] = 666 print(dic) # {'a': 10, 'b': 2, 'c': 3, 'd': 666}
成员运算(比较的是key)
dic = {'a':1, 'b':2, 'c':3} print('name' in dic) # false
for循环(对key循环)
dic = {'a':1, 'b':2, 'c':3} for i in dic: print(i) # 打印结果: a b c
keys() / values() / items()
dic = {'a':1, 'b':2, 'c':3} print(dic.keys()) # 获取所有key值 dict_keys(['a', 'b', 'c']) print(dic.values()) # 获取所有value值 dict_values([1, 2, 3]) print(dic.items()) # 获取所有键值对 dict_items([('a', 1), ('b', 2), ('c', 3)])
get() 取值
dic = {'a':1, 'b':2, 'c':3} print(dic.get('a')) # 取得1 print(dic.get('qq')) # 字典中没有要找的key值,则返回none # 打印:none print(dic.get('qq', 66)) # 字典中没有要找的key值,又给定数值,则返回该数值 # 打印:66
update() 扩展字典
dic1 = {'a':1} dic2 = {'b':2} dic1.update(dic2) print(dic1) # 打印结果: {'a': 1, 'b': 2}
setdefault() 有则不更改,没有则增加
dic = {'a':1, 'b':2} dic.setdefault('a',2) print(dic) # {'a': 1, 'b': 2} dic.setdefault('c', 9) print(dic) # {'a': 1, 'b': 2, 'c': 9}
总结:
字典内置方法 | 用法 |
---|---|
get() | 找到了就找了;没有值返回none,如果给定数值,就返回该数值 |
update() | dic1.update(dic2) 扩展字典 |
setdefault() | 有则不更改,没有则增加 |
keys() / values() / items() | 获取全部key值 / 获取全部value值 / 获取全部键值对 |
练习
1. 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中 即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
lt = [11,22,33,44,55,66,77,88,99,90] dic = {'k1': [], 'k2': []} for i in lt: if i > 66: dic['k1'].append(i) else: dic['k2'].append(i) print(dic)
2. 统计s='hello alex alex say hello sb sb'中每个单词的个数 结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}
s = 'hello alex alex say hello sb sb' dic = {} for i in s.split(): dic.setdefault(i,s.count(i)) print(dic)
3. 写代码,有如下变量,请按照要求实现每个功能 name = " alex" # 1) 移除 name 变量对应的值两边的空格,并输出处理结果 # 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果 # 3) 判断 name 变量对应的值是否以 "x" 结尾,并输出结果 # 4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果 # 5) 将 name 变量对应的值根据 “l” 分割,并输出结果。 # 6) 请输出 name 变量对应的值的第 2 个字符? # 7) 请输出 name 变量对应的值的前 3 个字符? # 8) 请输出 name 变量对应的值的后 2 个字符? # 9) 请输出 name 变量对应的值中 “e” 所在索引位置? # 10) 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
(1)
name = " alex" print(name.strip())
(2)
print(name.startswith('a1'))
(3)
print(name.endswith('x'))
(4)
print(name.replace('l', 'p'))
(5)
print(name.split('l'))
(6)
print(name[1])
(7)
print(name[0:3])
(8)
print(name[3:])
(9)
print(name.find('e'))
(10)
s = 'oldboy' print(s.rstrip('y'))
4. 假设有一个文件test.txt,内有如下内容 l=[ {'name':'alex','age':84}, {'name':'oldboy','age':73}, {'name':'egon','age':18}, ] 需求: 1. 读取文件内容 2. 计算这三个人的年龄总和
with open('4.txt', 'r', encoding='utf8') as f: data = f.read() # print(type(data)) lt = data.split() # print(lt) # print(type(lt)) dic1 = eval(str(lt[1]).rstrip(',')) dic2 = eval(str(lt[2]).rstrip(',')) dic3 = eval(str(lt[3]).rstrip(',')) print('三人年龄总和为;', dic1['age'] + dic2['age'] + dic3['age'])