day1-6 字符串、列表、元组、字典、类型转换
day1
1、python历史。
宏观上:python2 与 python3 区别:
python2 源码不标准,混乱,重复代码太多,
python3 统一 标准,去除重复代码。
2、python的环境。
编译型:一次性将所有程序编译成二进制文件。
缺点:开发效率低,不能跨平台。
优点:运行速度快。
:C,C++等等。
解释型:当程序执行时,一行一行的解释。
优点:开发效率高,可以跨平台。
缺点:运行速度慢。
:python ,php,等等。
3、break:跳出循环 continue:到循环首
day2
1、编码
1bit 8bit = 1bytes
1byte 1024byte = 1KB
1KB 1024kb = 1MB
1MB 1024MB = 1GB
1GB 1024GB = 1TB
最初是由美国人发明的ascii码,为密码本,后来发明了万国码“unicode”,可是代表汉子要占用4个字节,太大了;
所以发明了utf-8、utf-16、utf-32,一个字符24为,3字节
utf-8:最少用一个字节,8位表示一个英文;
欧洲16位,两个字节
亚洲24位,3个字节
中国人发明了gbk,一个中文16位去表示,2个字节
GBK:基于ascii研发的,只能支持中文和英文,不能喝utf-8直接转换
2、逻辑运算:And、or、not
- 优先级:( )>not>and>or
- int ——> bool 非零的转换成bool为True 0转换为bool是False
- bool ——> int True=1 False=0
- print(x or y) x 为 True时(非零为True),返回x 否则返回y
- print(x and y) x 为 True时 返回y 凑则返回x
- print(1 or 2 and 3 or 1 > 2 and 5 ) 找找类似这样的规律 “我感觉看到or就行”
day3
1、int
- *.bit_length() //求数字转换为二进制最小长度
2、转换
# bool True False
# int ——> str
i = 1
s = str(i)
# str ——> int //只有数字可以转换
s = ''
i = int(s)
# int ——> bool //非零就是True,0位False
i = 3
b = bool(i)
# bool ——> int // True = 1, False = 0
''' ps:
while True:
pass
while 1: # 效率高
pass
''' # str ——> bool //字符串位空 = False,非空为True
3、str
# 索引和切片
s = "ABCDESDASDEG" s1 = s[0] # 取出第一个字母(A)
s2 = s[2] # 取出第三个字母(B)
s3 = s[-1] # 取出倒数第一位(G)
s4 = s[-2] # 取出倒数第二位(E)
# 切片:顾首不顾尾 s5 = s[0:3] # 取出ABC
s6 = s[0:-1] # 取出第一个到倒数第二个(ABCDESDASDE)
s7 = s[0:] # 取出全部
s8 = s[:] # 取出全部
# 跳着取[首:尾:步长] s9 = s[0:5:2] # 第0个索引盗第5个索引,跳两个取(ACE) # 倒着取 s10 = s[3::-1] # 取 DCBA
s11 = s[-1::-1] # 逆序取全部
s12 = s[::-1] # 逆序取全部 # 字符串操作
s = 'alex.egon.wusir'
s1 = s.title() # 以字符和数字隔开的,其后的字母大写 返回(Alex Egon Wusir) s = 'alexWUsir'
# 更改大小写
s1 = s.capitalize() # 首字母大写,其它大写的也变成小写
s1 = s.upper() # 全部变成大写
s1 = s.lower() # 全部小写
s1 = s.swapcase() # 大小写翻转
# 居中和制表符
s1 = s.center(20, "#") # 设置一个20的长度,让字符串居中,默认用空格填充两边,可以使用其他符号,如"#"号
s1 = s.expandtabs() # 如果字符串中有“\t”则,在前边的封8进行补位
# 字符串的判断
s1 = s.startswith("al") # 如果是以什么开头,是返回True
s1 = s.startswith("e", 2) # 从第二个字符到最后是不是以”e“开头,是返回True
# 字符串的查找
s1 = s.find("W") # 查找字符串中是否有某个元素,有的话返回索引;没有返回-1
s1 = s.find("U", ) # 从第二个开始进行查找,如果找到返回索引,找不到返回-1
s1 = s.index("U") # 寻找元素,找到返回索引,找不到报错
# 删除空格
s1 = s.strip() # 去除前后的空格
s1 = s.strip("@#$") # 删除字符串中的前后@#$,不论顺序
s1 = s.rstrip() # 删除右侧
s1 = s.lstrip() # 删除左侧
# 统计个数
s1 = s.count("a") # 计数字符串中有几个a
# 分割 str ——> list
s1 = s.split() # 以空格分割为列表
# 公共方法,字典、列表、元组都可以用的
len(s) # 测量总共有几个元素
# 格式化输入
s1 = "我叫{},今年{},爱好{},再说一次我叫{}".format('太白', 20, 'women', '太白')
s1 = "我叫{0},今年{1},爱好{2},再说一次我叫{0}".format('太白', 20, 'women') # 替换
s = '我的敬爱傻傻的啥大事傻傻卡号'
s1 = s.replace("傻傻", '聪明') # 替换全部
s1 = s.replace("傻傻", '聪明', 1) # 替换全部第一个 # is系列
s = "asdla131"
s1 = s.isalnum() # 是不是由字母或者数字组成
s1 = s.isalpha() # 是不是由字母组成
s1 = s.isdigit() # 是不是由数字组成
day4
1、list
li = ["alex", [1, 2, 3], "wusir", "egon", "女神"]
# l1 = li[0]
# l2 = li[1] # 增
# 1、增加:list.append //默认增加到最后
# li.append("日天")
# li.append(2)
# 持续添加,想退出按q or Q
# while 1:
# name = input(">>>")
# if name.lower().strip() == "q":
# break
# else:
# li.append(name.strip())
# 2、添加list.extent //增加都最后
# li.extend("123")
# li.extend([1, 2, 3])
# 3、插入:list.insert //按照索引插入
# li.insert(4, "大灰") # 删
# 1、li.pop //按照索引去删除,返回值为删除的元素,为空默认删除最后一个
# print(li.pop())
# 2、li.remove //按照元素删除,元素必须存在,否则报错
# li.remove("egon")
# 3、li.clear //删除所有元素
# li.clear()
# del //删除列表,也可以切片删除
# del li
# del li[0:2] # 改
# 1、直接改索引的值
# li[0] = 'hello'
# 2、切片改,选择切片范围,可以随便改,可大于范围,可小于范围
# li[0:1] = "牛牛牛"
# li[0:2] = [1, "asd", '你好', [1, 2]] # 查
# 1、循环
# for i in li:
# print(i)
# 2、切片
# print(li[0:3]) # 公共方法
# print(len(li))
# print(li.count('egon'))
# print(li.index("wusir")) li = [1, 64, 95, 55, 123] # li.sort() # 正向排序
# li.sort(reverse=True) # 倒序排序
# li.reverse() # 反转
print(li)
list的增删改查
2、list嵌套
li = ['taibao', '武藤兰', '苑昊', ['alex', 'egon', 89], 23]
# print(li[1][1]) # 找到'藤'
li[0] = li[0].capitalize() # ‘taibai’的首字母大写
li[2] = li[2].replace("昊", '日天')
3、元祖
# tu = (1, 2, 3, ['mrxuan', 'qwer', 'zxcvb'], 'egon')
# tu[3][3] = tu[3][3].upper()
# tu[3].append("Q")
# print(tu)
4、字符串和列表的转换以及join的方法运用
# 列表 --> str join
s = "-".join(["ni", 'hao', 'ya'])
print(s)
# 字符串转换为列表
li = '我 你 他 哈 her new'.split()
print(li)
5、range的用法
# range for i in range(0, 10):
print(i)
for i in range(10, 0, -2):
print(i)
day5
# dict
"""
数据类型划分:可变数据类型,不可变数据类型
不可变数据类型:元组,bool,int,str 可哈希
可变数据类型:list,dict,set 不可哈希
dict key:必须是不可变数据类型 可哈希
dict value:任意数据类型 dict 优点:
二分查找
存储大量的关系数据
特点:
无序的
""" # dic = {
# 'name': ['大猛', '小孟'],
# 'py9': [{'num': , 'avg_age': }],
# True: ,
# (, , ): 'wuyiyi',
# : '二哥'
# } # dic1 = {'age': , 'name': 'jin', 'sex': 'male'} # 增
# 、 索引修改
# dic1['high'] = # 没有键值对,添加
# dic1['age'] = # 如果有建,则值覆盖
# 、setdefault 键值对有的话,不做任何改变,没有则添加
# dic1.setdefault('weight', ) # 删
# 、pop 返回key的value
# print(dic1.pop('name'))
# 如果没有则会报错; 可以在逗号后边添加一个参数,则不会报错
# dic1.pop('aa')
# dic1.pop('aa', None) # None可以自定义写其他的,设置的参数将会成为pop的返回值
# dic1.popitem() # 随机删除一个键值,返回一个删除键值元组
# del dic1['name'] # 删除
# del dic1 # 删除字典 # 改
# dic1 = {'age': , 'name': 'jin', 'sex': 'male'}
# dic = {'age': , 'name': 'alex', 'sex': 'male'}
# dic1.update(dic) # 将dic的字典更新到dic1,有的话覆盖,没有则增加 # 查
# print(dic1.keys()) # 所有的key
# print(dic1.values()) # 所有的value
# print(dic1.items()) # 所有字典的键值
# for i in dic1:
# print(i)
# for i in dic1.keys():
# print(i)
# for i in dic1.values():
# print(i)
# for k, v in dic1.items():
# print(k, v)
# print(dic1['name'])
# print(dic1['name1']) # 报错
# print(dic1.get('name1')) # 不报错
# print(dic1.get('name1', '没有这个键')) # 果果没有key则会返回后边的str
# dic1.clear() # 清空字典 # print(dic1)
dict的增删改查
小知识汇总
# = 赋值 == 比较 is 比较内存地址 id(内容):输出内存地址
# 数字, 字符串 定于小数据池,节省内存空间
# 数字的范围:-5 -- 256之间的数字 会开辟一个内存空间
# 字符串:
- 不含有特殊字符
- s * 20 还是同一个地址,s * 21 以后都是两个,s为一个字符
编码:
ASCII
A:00000010 8位 一个字节
unicode
A:00000000 00000001 00000010 00000100 32 位 四个字节
中:00000000 00000001 00000010 00000100 32 位 四个字节
utf-8
A: 0010 0000 8位 1个字节
中: 00000001 00000010 00000100 24 位 三个字节
gbk
A: 00000110 8位 一个字节
中: 00000010 00000110 16位 两个字节 1、个个编码之间的二进制,是不能互相识别的,会产生乱码。
2、文件的储存、传输,不能使unicode(只能是ytf-8 utf-16 gbk gbk2313 ASCII)等 python3:
str 在内存中是用unicode编码。
bytes类型:
对于英文:
str : 表现形式:s = "alex"
编码方式:010101010 unicode
bytes: 变现形式:s = b"alex" b代表bytes类型
编码方式:000101010 utf-8 gbk.....
对于中文:
str : 表现形式:s = "中国"
编码方式:010101010 unicode
s = 'alex'
s1 = b'alex'
print(s,type(s))
print(s1,type(s1))
bytes: 变现形式:s = b"x\e91\e91\e91\e01\e21\e31\e32" b代表bytes类型
编码方式:000101010 utf-8 gbk.....
s = '中国'
s1 = b'中国'
print(s,type(s))
print(s1,type(s1))
s1 = "alex"
# encode 编码, str ——> bytes
s2 = s1.encode('utf-8')
s2 = s1.encode('gbk')
s10 = "中国"
s11 = s10.encode('utf-8')
s11 = s10.encode('gbk')
day1-6 字符串、列表、元组、字典、类型转换的更多相关文章
- Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式
Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell ...
- Python第三天 序列 数据类型 数值 字符串 列表 元组 字典
Python第三天 序列 数据类型 数值 字符串 列表 元组 字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...
- python字符串 列表 元组 字典相关操作函数总结
1.字符串操作函数 find 在字符串中查找子串,找到首次出现的位置,返回下标,找不到返回-1 rfind 从右边查找 join 连接字符串数组 replace 用指定内容替换指定内容,可以指定次数 ...
- python 字符串,列表,元组,字典相互转换
1.字典 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} 字典转为字符串,返回:<type 'str'> {'age': 7, 'n ...
- python字符串/列表/元组/字典之间的相互转换(5)
一.字符串str与列表list 1.字符串转列表 字符串转为列表list,可以使用str.split()方法,split方法是在字符串中对指定字符进行切片,并返回一个列表,示例代码如下: # !usr ...
- Python数据类型-布尔/数字/字符串/列表/元组/字典/集合
代码 bol = True # 布尔 num = 100000000; # 数字 str = "fangbei"; # 字符串 str_cn = u"你好,方倍" ...
- Python自动化开发 - 字符串, 列表, 元组, 字典和和文件操作
一.字符串 特性:字符串本身不可修改,除非字符串变量重新赋值.Python3中所有字符串都是Unicode字符串,支持中文. >>> name = "Jonathan&q ...
- Python 整数 长整数 浮点数 字符串 列表 元组 字典的各种方法
对于Python, 一切事物都是对象,对象基于类创建!! 注:查看对象相关成员var,type, dir 一.整数 如: 18.73.84 每一个整数都具备如下需要知道的功能: def bit_len ...
- Python笔记【5】_字符串&列表&元组&字典之间转换学习
#!/usr/bin/env/python #-*-coding:utf-8-*- #Author:LingChongShi #查看源码Ctrl+左键 #数据类型之间的转换 Str='www.baid ...
- python_字符串&列表&元组&字典之间转换学习
#!/usr/bin/env/python #-*-coding:utf-8-*- #Author:LingChongShi #查看源码Ctrl+左键 #数据类型之间的转换 Str='www.baid ...
随机推荐
- 没有使用Material组件
// 这个App没有使用Material组件, 如Scaffold. // 一般来说, app没有使用Scaffold的话,会有一个黑色的背景和一个默认为黑色的文本颜色. // 这个app,将背景色改 ...
- poj2774
思路 求出height之后 只要相邻两个子串是本串不同的来更新就好 因为这样一定是最优啊..取min显然越长越不好 (这里'%'当成'{'吧) abc%bca height i sa belong 0 ...
- Custom Quality Profiles in SonarQube
https://medium.com/ltunes/custom-quality-profiles-in-sonarqube-part-1-8754348b9369 Creating Custom Q ...
- 题解——HDU 4734 F(x) (数位DP)
这道题还是关于数位DP的板子题 数位DP有一个显著的特征,就是求的东西大概率与输入关系不大,理论上一般都是数的构成规律 然后这题就是算一个\( F(A) \)的公式值,然后求\( \left [ 0 ...
- error: pcap library not found! 解决方法
参考: error: pcap library not found! error: pcap library not found! 解决方法 $ sudo apt-get install libsql ...
- 搭建 FTP 文件服务
1.安装并启动 FTP 服务 2.配置 FTP 权限 3.准备域名和证书 4.访问 FTP 安装 VSFTPD 使用 yum 安装 vsftpd: yum install vsftpd -y vsft ...
- layout_gravity与gravity的区别,和padding margin的区别
https://blog.csdn.net/github_39688629/article/details/77790541
- 解決 Android Studio 不停 Indexing 的問題(Updating Indices: Indexing paused due to batch update)
遇到這個問題通常是 IDE 更新後,或是反覆使用 Android Studio 開啟其他專案所導致,解決方法其實非常簡單喔! 点击 這個選項的功用是「清除 IDE 暫存並重啟」,沒錯,會出現上述情形的 ...
- springboot学习之授权Spring Security
SpringSecurity核心功能:认证.授权.攻击防护(防止伪造身份) 涉及的依赖如下: <dependency> <groupId>org.springframework ...
- Jmeter 老司机带你一小时学会Jmeter
Jmeter的安装 官网下载地址:http://jmeter.apache.org/download_jmeter.cgi 作为Java应用,是需要JDK环境的,因此需要下载安装JAVA,并且作必 ...