初识python(七)

可变与不可变

可变与不可变是针对数据类型而言的

按照存值个数划分

存一个值(数字型/字符串),存多个值(列表/字典)

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() 复制列表
indexlt.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'])
    原文作者:SetCreed
    原文地址: https://www.cnblogs.com/setcreed/p/11436068.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞