python27期day07:基础数据类型补充、循环删除的坑、二次编码、作业题。
1、求最大位数bit_length:
a = 10 #8421 1010
print(a.bit_length())
结果:4
2、capitalize首字母变大写:
s = "alex"
b = s.capitalize() #补充字符串是不可变数据类型、只要对数据修改了就会开辟新的空间。
print(b)
结果:Alex
3、title每个单词首字母大写:
s = "alex你wusir"
s1 = s.title()
print(s1)
结果:Alex你Wusir
4、index通过元素查找索引、查找不到时报错
s = "alex你wusir"
s1 = s.index("x")
print(s1)
结果:3
5、find通过元素查找索引、查不到时返回-1
s = "alex你wusir"
s1 = s.find("d")
print(s1)
结果:-1
6、"".join(可迭代的列表、元组):
a = "cxzczxcz"
s = "_".join(a)
print(s)
结果:c_x_z_c_z_x_c_z
7、center居中并填充:
s = "alex wusir"
s1 = s.center(20,"-")
print(s1)
结果:-----alex wusir-----
8、format按照位置格式化:
s = "alex{}wusir"
s1 = s.format("你好")
print(s1)
结果:alex你好wusir
9、format按照索引格式化:
s = "alex{0}wu{1}si{2}r"
s1 = s.format("你好","我好","大家好")
print(s1)
结果:alex你好wu我好si大家好r
10、format按照关键字格式化:
s = "alex{a}wu{c}si{b}r"
s1 = s.format(b = "你好",a = "我好",c = "大家好")
print(s1)
结果:alex我好wu大家好si你好r
#11、swapcase大小写转换:
s = "alEx"
s1 = s.swapcase()
print(s1)
结果:ALeX
12、reverse翻转:
lst = [1,2,3,4,6,5]
print(lst[::-1]) #新开辟了一个列表
lst.reverse() #原地修改
print(lst)
结果:[5, 6, 4, 3, 2, 1]
[5, 6, 4, 3, 2, 1]
13、sort排序、默认是升序(从小到大)。
lst = [1,2,3,4,6,5]
lst.sort(reverse=True)
print(lst)
结果:[6, 5, 4, 3, 2, 1]
14、ID查看内存地址:
lst1 = [1,2,3,[4]]
lst2 = [4,5,6]
# #方法一:
# lst1.extend(lst2)
# print(lst1)
#方法二:
lst3 = lst1 * 3 #列表进行乘法时元素都是共用的
print(id(lst3[0]),id(lst3[4])) #查看ID一样是节省内存
15、面试题之列表或元组进行乘法时元素都是共用的
lst = [1,2,[]]
lst1 = lst * 3
lst1[-1].append(8)
print(lst1)
结果:[1, 2, [8], 1, 2, [8], 1, 2, [8]]
16、列表之省事和专业:
lst = []· #省事
lst1 = list() #专业
print(lst)
print(lst1)
17、元组多样性:
tu = (10)
tu1 = (10,)
tu2 = ()
print(tu)
print(tu1)
print(tu2)
print(type(tu))
print(type(tu1))
print(type(tu2))
结果:
10
(10,)
()
<class 'int'>
<class 'tuple'>
<class 'tuple'>
18、fromkeys批量创建键值对:
dic = {}
dic = dic.fromkeys("abc",12) #批量创建键值对 参数1:键(可迭代) 参数2:值(共用)
print(dic)
结果:{'a': 12, 'b': 12, 'c': 12}
19、列表转字典:
print(dict([(1,2),(4,5),(7,8)]))
结果:{1: 2, 4: 5, 7: 8}
20、基础数据类型总结:
有序无序 是否可变 是否迭代 取值方式
int 有序(不支持索引) 不可变 不可迭代 直接查看
bool 不可变 不可迭代 直接查看
str 有序(支持索引) 不可变 可迭代 通过索引查看
list 有序(支持索引) 可变 可迭代 通过索引查看
tuple 有序(支持索引) 不可变 可迭代 通过索引查看
dict 无序(不支持索引) 可变 可迭代 通过键查看
set 无序(不支持索引) 可变 可迭代 直接查看
21、循环删除的坑:
投机取巧型:
lst = [11,22,33,44,55]
for i in lst:
lst.clear()
print(lst)
结果:[]
remove型:for循环有自主计数功能、列表有自动补位功能。
lst = [11,22,33,44,55]
for i in lst:
lst.clear()
print(lst)
结果:[22, 44]
range删除:
lst = [11,22,33,44,55]
for i in range(len(lst)): #用range定好范围
lst.pop(0)
print(lst)
结果:[]
copy删除:
lst = [11,22,33,44,55]
lst1 = lst.copy()
for i in lst1:
lst.remove(i)
print(lst)
结果:[]
字典:
字典大小说的是字典的长度、长度就是键值对的个数。
不能修改键值对的大小、但是能修改键对应的值。
dic = {"key":1,"key2":2}
for i in dic:
dic[i] = i + "1"
print(dic)
结果:{'key': 'key1', 'key2': 'key21'}
删除字典中的键值对:
dic = {"key":1,"key2":2}
dic1 = dic.copy()
for i in dic1:
del dic[i]
print(dic)
结果:{}
删除集合中的元素:
s = {1,2,3,5,6}
s1 = s.copy()
for i in s1:
s.remove(i)
print(s)
结果:set()
把索引为奇数的删除:
方法一:
lst = [11,22,33,44,55,66]
lst1 = lst.copy()
for i in lst1:
if lst1.index(i) % 2 == 1:
lst.remove(i)
print(lst)
结果:[11, 33, 55]
方法二:
del lst[1::2]
print(lst)
结果:[11, 33, 55]
作业题:
ascii英文、数字、符号
英文:1个字节、8位
gbk:英文、数字、符号、中文
英文:1个字节、8位
中文:2个字节、16位
Unicode:英文、数字、符号、中文
英文:4个字节、32位
中文:4个字节、32位
utf-8:英文、数字、符号、中文
英文:1个字节、8位
欧洲:2个字节、16位
亚洲:3个字节、24位
python3内存中使用的就是Unicode、万国码、不断的使用回收、硬盘中存储时选择的编码方式gbk和utf-8。
以什么编码就以什么解码:
s = "你好"
s1 = s.encode("utf-8")
print(s1)
s2 = s1.decode("utf-8")
print(s2)
结果:b'\xe4\xbd\xa0\xe5\xa5\xbd'
你好
作业题:
# 1.看代码写结果
v1 = [1,2,3,4,5]
v2 = [v1,v1,v1]
v1.append(6)
print(v1)
print(v2)
# 结果:[1, 2, 3, 4, 5, 6]
# [[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]]
# 2.看代码写结果
v1 = [1,2,3,4,5]
v2 = [v1,v1,v1] #v2 = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]
v2[1][0] = 111 #v2 = [[111,2,3,4,5],[111,2,3,4,5],[111,2,3,4,5]]
v2[2][0] = 222 #v2 = [[222,2,3,4,5],[222,2,3,4,5],[222,2,3,4,5]]
print(v1)
print(v2)
# 结果:[222, 2, 3, 4, 5] #赋值是两个或多个变量名指向同一个内存地址、有一个操作内存地址的值进行改变、其余的变量名在查看的时候都进行更改
# [[222, 2, 3, 4, 5], [222, 2, 3, 4, 5], [222, 2, 3, 4, 5]]
# 3.看代码写结果,并解释每一步的流程。
v1 = [1,2,3,4,5,6,7,8,9]
v2 = {}
for item in v1:
if item < 6:
continue
if 'k1' in v2:
v2['k1'].append(item)
else:
v2['k1'] = [item ]
print(v2)
# 结果:{'k1': [6, 7, 8, 9]}
# 4.简述赋值和深浅拷贝?
# 赋值:多个变量名指向同一个内存地址。
# 浅拷贝:只拷贝第一层的元素内存地址、可变和不可变的数据都是共用的。
# 深拷贝:对于不可变的数据、元素是共用的、可变的数据、开辟新的空间、不管嵌套多少层。
# 5.看代码写结果
import copy
# num1 = 1
# num2 = copy.copy(num1)
# num3 = copy.deepcopy(num1)
# print(num1 is num2)
# print(num1 is num3)
# v1 = "alex"
# v2 = copy.copy(v1)
# v3 = copy.deepcopy(v1)
# print(v1 is v2)
# print(v1 is v3) #小数据池包含数字、字符串、布尔值.
# bool1 = True
# bool2 = copy.copy(bool1)
# bool3 = copy.deepcopy(bool1)
# print(bool1 is bool2)
# print(bool1 is bool3)
# 结果:True
# True
# 6.看代码写结果
import copy
v1 = [1,2,3,4,5]
v2 = copy.copy(v1)
v3 = copy.deepcopy(v1)
print(v1 is v2)
print(v1 is v3) #小数据池不包含列表
# 结果:False
# False
# 7.看代码写结果
import copy
v1 = [1,2,3,4,5]
v2 = copy.copy(v1) #[1,2,3,4,5]
v3 = copy.deepcopy(v1) #[1,2,3,4,5]
print(v1[0] is v2[0])
print(v1[0] is v3[0])
print(v2[0] is v3[0])
# True
# True
# True
# 8.看代码写结果
import copy
v1 = [1,2,3,4,[11,22]]
v2 = copy.copy(v1) #浅拷贝是拷贝了一个空盒子、里面的元素还是原列表里面的元素
v3 = copy.deepcopy(v1) #深拷贝也是拷贝了一个空盒子、里面的不可变数据类型共用、可变数据类型新开盒子【11,22】
print(v1[-1] is v2[-1])
print(v1[-1] is v3[-1])
print(v2[-1] is v3[-1])
#True
# False
# False
# 9.看代码写结果
import copy
v1 = [1,2,3,{"name":'太白',"numbers":[7,77,88]},4,5]
v2 = copy.copy(v1) #因为是浅拷贝里面的元素都复制[1,2,3,{"name":'太白',"numbers":[7,77,88]},4,5]
print(v1 is v2) #答案是False、因为列表是新开的、小数据池只包含数字、字符串、布尔值、不包含列表、驻留机制是长得像的共用一个内存地址、
print(v1[0] is v2[0]) #答案是True、因为用的都是浅拷贝
print(v1[3] is v2[3]) #答案是True、因为用的都是浅拷贝
print(v1[3]['name'] is v2[3]['name']) #答案是True、因为用的都是浅拷贝
print(v1[3]['numbers'] is v2[3]['numbers']) #答案是True、因为用的都是浅拷贝
print(v1[3]['numbers'][1] is v2[3]['numbers'][1]) #答案是True、因为用的都是浅拷贝
#False
# True
# True
# True
# True
# True
# 10.看代码写结果
import copy
v1 = [1,2,3,{"name":'太白',"numbers":[7,77,88]},4,5]
v2 = copy.deepcopy(v1) #【1,2,3,{"name":'太白',"numbers":【7,77,88】},4,5】
print(v1 is v2) #深拷贝是遇到不可变数据类型、元素是共用的、可变数据类型、新开辟空间、不管嵌套多少层、深拷贝只要遇到可变数据类型就开辟空间、不管嵌多少层
print(v1[0] is v2[0]) #T
print(v1[3] is v2[3]) #F
print(v1[3]['name'] is v2[3]['name']) #T
print(v1[3]['numbers'] is v2[3]['numbers']) #F
print(v1[3]['numbers'][1] is v2[3]['numbers'][1]) #T
# False
# True
# False
# True
# False
# True
# 11.请说出下面a,b,c三个变量的数据类型。
a = ('太白金星') #字符串
b = (1,) #元组
c = ({'name': 'barry'}) #字典
# 12、按照需求为列表排序:
l1 = [1, 3, 6, 7, 9, 8, 5, 4, 2]
# 从大到小排序
l1.sort(reverse=True)
print(l1)
# 从小到大排序
l1.sort()
print(l1)
# 反转l1列表
l1.reverse()
print(l1)
# 13.利用python代码构建一个这样的列表(升级题):
[['_','_','_'],['_','_','_'],['_','_','_']]
print([list("___")] * 3)
# 14.看代码写结果:
l1 = [1,2,]
l1 += [3,4]
print(l1)
# 结果:[1, 2, 3, 4]
# 15.看代码写结果:
dic = dict.fromkeys('abc',[])
dic['a'].append(666)
dic['b'].append(111)
print(dic)
# 结果:{'a': [666, 111], 'b': [666, 111], 'c': [666, 111]}
# 16.l1 = [11, 22, 33, 44, 55],请把索引为奇数对应的元素删除
l1 = [11, 22, 33, 44, 55]
l11 = l1.copy()
for i in l11:
if l11.index(i) % 2 == 1:
l1.remove(i)
print(l1)
# 结果:[11, 33, 55]
# 17.dic = {'k1':'太白','k2':'barry','k3': '白白', 'age': 18} 请将字典中所有键带k元素的键值对删除.
dic = {'k1': '太白', 'k2': 'barry', 'k3': '白白', 'age': 18}
for key in list(dic.keys()): # ['k1', 'k2', 'k3','age']
if 'k' in key:
dic.pop(key)
print(dic)
# 18.完成下列需求:
s1 = '宝元'
# 将s1转换成utf-8的bytes类型。
s1 = '宝元'
s1 = s1.encode("utf-8")
print(s1)
s1 = s1.decode("utf-8")
print(s1)
# 将s1转化成gbk的bytes类型。
s1 = s1.encode("gbk")
print(s1)
b = b'\xe5\xae\x9d\xe5\x85\x83\xe6\x9c\x80\xe5\xb8\x85'
# b为utf-8的bytes类型,请转换成gbk的bytes类型。
b = b.decode("utf-8")
print(b)
b = b.encode("gbk")
print(b)
# 19、用户输入一个数字,判断一个数是否是水仙花数。
# 水仙花数是一个三位数, 三位数的每一位的三次方的和还等于这个数. 那这个数就是一个水仙花数,
# 例如: 153 = 1**3 + 5**3 + 3**3 #1+125+27
#版一
num_sum = 0
num = input("请输入水仙花数字:")
for i in num:
num_sum += int(i) ** 3
if int(num) == num_sum:
print("是水仙花")
else:
print("不是水仙花")
#版二、三元运算
num_sum = 0
num = input("请输入水仙花数字:")
for i in num:
num_sum += int(i) ** 3
print("是水仙花" if num_sum == int(num) else "不是水仙花")
# 20、把列表中所有姓周的⼈的信息删掉(此题有坑, 请慎重):
# lst = ['周⽼⼆', '周星星', '麻花藤', '周扒⽪']
#版一、在某某里面
lst = ['周⽼⼆', '周星星', '麻花藤', '周扒⽪']
lst1 = lst.copy()
for i in lst1:
if "周" in i:
lst.remove(i)
print(lst)
#版二、用索引开头判断
lst1 = lst.copy()
for i in lst1:
if i[0] == "周":
lst.remove(i)
print(lst)
# 结果: lst = ['麻花藤']
# 21、车牌区域划分, 现给出以下车牌. 根据车牌的信息, 分析出各省的车牌持有量. (选做题)
cars = ['鲁A32444','鲁B12333','京B8989M','⿊C49678','⿊C46555','沪 B25041']
locals = {'沪':'上海', '⿊':'⿊龙江', '鲁':'⼭东', '鄂':'湖北', '湘':'湖南'}
# 结果: {'⿊龙江':2, '⼭东': 2, '上海': 1}
dic = {}
for i in cars:
key = i[0]
if key in locals:
dic[locals[key]] = dic.get(locals[key],0) + 1
print(dic)
python27期day07:基础数据类型补充、循环删除的坑、二次编码、作业题。的更多相关文章
- python基础数据类型补充
python_day_7 一. 今日主要内容: 1. 补充基础数据类型的相关知识点 str. join() 把列表变成字符串 列表不能再循环的时候删除. 因为索引会跟着改变 字典也不能直接循环删除.把 ...
- Python基础数据类型补充及深浅拷贝
本节主要内容:1. 基础数据类型补充2. set集合3. 深浅拷贝主要内容:一. 基础数据类型补充首先关于int和str在之前的学习中已经讲了80%以上了. 所以剩下的自己看一看就可以了.我们补充给一 ...
- python基础(9):基本数据类型四(set集合)、基础数据类型补充、深浅拷贝
1. 基础数据类型补充 li = ["李嘉诚", "麻花藤", "⻩海峰", "刘嘉玲"] s = "_&qu ...
- 基础数据类型补充 set集合 深浅拷贝
一.基础数据类型补充 1. "拼接字符串".join(可迭代对象) 可迭代对象为列表时,输出列表元素与拼接字符串的拼接 li = ['张三', '李四', '王五', '赵四'] ...
- 记录我的 python 学习历程-Day07 基础数据类型进阶 / 数据类型之间的转换 / 基础数据类型总结 / 编码的进阶
基础数据类型 str(字符串) str:补充方法练习一遍就行 s.capitalize() 首字母大写,其余变小写 s = 'dyLAn' print(s.capitalize()) # Dylan ...
- 基础数据类型补充,及capy daty7
1,基础数据类型,总结补充. int:bit_lenth() str: captilze() 首字母大写,其余小写. upper() 全大写. lower() 全小写. find() 通过元素找索引, ...
- 《Python》 基础数据类型补充和深浅copy
一.基础数据类型的补充 元组: 如果元组中只有一个数据,且没有逗号,则该‘元组’数据类型与里面的数据类型一致 列表: 列表之间可加不可减,可跟数字相乘 l1=['wang','rui'] l2=['c ...
- Python——基础数据类型(补充)
1.基础数据类型汇总补充 (1)小数据池: 为了节省空间,数字和字符串有,其他的没有[了解] 数字:-5---256之间的数字共用一个内存地址 #(1)i1 = i2 id(i1) == id ...
- python基础数据类型补充以及编码的进阶
一.基本数据类型的补充循环列表改变列表大小的问题#请把列表中索引为基数的元素写出l1=[1,2,3,4,5,6]for i in l1: if i%2!=0: print(i)结果:135二:基本数据 ...
随机推荐
- UVA11374 Airport Express 正反两次最短路
问题描述 洛谷(有翻译) 吐槽 一道坑题. 如何对待商务票 因为商务票只有一张,所以在\(k\)条边中只有一条边会被选中,很显然,最后这条边会被枚举. 如何选择使用商务票的边 假设我们正在枚举这条边, ...
- Codeforces Round #553 (Div. 2) E 贡献
https://codeforces.com/contest/1151/problem/E 题意 一条长n的链,每个点上有值\(a[i]\),定义\(f(l,r)\)为该区间的\(值\)所代表的点留下 ...
- jenkins配置自动部署java程序
任务背景 该项目包含4个程序包:a.jar,b.jar,c.jar,d.jar,每次启动前需要修改程序中的配置文件(修改数据源配置),然后按照先后顺序启动. 任务目标 1.利用jenkins拉取代码, ...
- 关于webpack的面试题
随着现代前端开发的复杂度和规模越来越庞大,已经不能抛开工程化来独立开发了,如react的jsx代码必须编译后才能在浏览器中使用:又如sass和less的代码浏览器也是不支持的. 而如果摒弃了这些开发框 ...
- CF1207G Indie Album
题目链接 problem 有\(n\)个字符串,对于第\(i\)个字符串通过以下两种方式中的一个给出. \(1\; c\),该字符串只含一个字符\(c\). \(2\ x\ c\),该字符串为第\(x ...
- Avalon的小故事 (1)
我:这个游戏真没意思,我为什么要玩这种东西 A:你渡过了前期才能发现这个游戏的乐趣 我:那我为什么不换一个游戏玩呢?换一个开头就让人欲罢不能的游戏? B:你这是逃避!你个懦夫! 我:我连自己选择游戏的 ...
- 数据仓库003 - 复习Linux shell命令 - 用户用户组 sudo 权限 du-sh find
一.用户用户组 [root@localhost ~]# ll /usr/sbin/user* -rwxr-x--- root root -- /usr/sbin/useradd -rwxr-x--- ...
- 明解C语言 中级篇 第四章答案
练习4-1 /* 珠玑妙算 */ #include <time.h> #include <ctype.h> #include <stdio.h> #include ...
- sitecore系列教程场所分类简介
在Sitecore体验平台(XP)中,场所是可跟踪的离线交互发生的位置.这些是发生交互的物理位置,例如特定的零售场所或公共汽车站. 您可以使用场所分类记录特定交互发生的位置.此信息保存在体验数据库(x ...
- 一个简单的利用 WebClient 异步下载的示例(四)
接上一篇,我们继续优化它. 1. DownloadEntry 类 public class DownloadEntry { public string Url { get; set; } public ...