欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

初识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'])