目录
基础提升(常用操作):
- list集合操作 (切片)
- str字符串操作
- dict字典操作
- 函数的定义
对照java,回顾java中的内容(java的基本功增强)
1、列表
# list 切片
# 从list中截取某一部分
a = [1, 2, 3, 4, 5, 6, 7, 8];
print(a[1:3]); # [2, 3] 包头不包尾,从下标1截取到下标3
print(a[1:]); # [2, 3, 4, 5, 6, 7, 8] 截取到最后【去掉第一个元素】
print(a[:-1]); # [1, 2, 3, 4, 5, 6, 7] 从头,截取到最后一个,但是不包含最后一个【去掉最后一个元素】
print(a[1:-1]); # [2, 3, 4, 5, 6, 7] 去头尾
print(a[:]); # [1, 2, 3, 4, 5, 6, 7, 8] 一份拷贝,相当于a.copy()
# 从后向前切,[87654321]
print(a[-1:1]) # [] 空,不支持这样写来从后向前切的
print(a[-1:1:-1]) # [8, 7, 6, 5, 4, 3] 三个位置,最后一个弄一个负数,表示从后往前切
print(a[::-1]); # [8, 7, 6, 5, 4, 3, 2, 1] 实现倒序
print(a[::-2]); # [8, 6, 4, 2],语法很灵活
print(a[::2]); # [1, 3, 5, 7]
2、字符串
问,Java中的List或Array有没有截取呢?
#List有,subList,从某个位置截取到另一个位置
ls.subList(0,3); 截取0-3
#Array有,copyOf,从头截取,截取n个长度
Arrays.copyOf(sa,10); 截取sa的前10个元素
# 字符串也有切片,截取字符串的某个部分,使用和list是一样的。
s = "123456789abcdefg";
print(s[1:3]) # 23
print(s[1:-1]) # 23456789abcdef
print(s[-1:1:-1]) # gfedcba9876543
print(s[:-1]) # 123456789abcdef
print(s[1:]) # 23456789abcdefg
#java中的字符串有截取吗?
s.substring(1); #从1到末尾
s.substring(1,10); #从1到10,不包含10
#js中字符串有截取吗?有:substr、substring。(基本功是否扎实)对照java,字符串会有:截取、替换、分割、大小写转换、查找、去空格等操作,我们可以通过dir函数,来看有哪些函数可以调用,对照功能即可。
print(dir(""))
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
a = "abcdefg 123456"
print(a.capitalize()) # Abcdefg 123456
print(a.center(66)); # abcdefg 123456
#小尝试自己完成
3、字符集
# 切片截取
# 分割
a = "abcdefg 123456"
b = a.split(" "); # 使用空格分割
print(b) # ['abcdefg', '123456']
# c = a.split(""); # python不支持,报错
# java: ["a","b","c","d"......"5","6"]
# print(c)
# python
# 内置函数list,将字符串转为list
c = list(a);
print(c) # ['a', 'b', 'c', 'd', 'e', 'f', 'g', ' ', '1', '2', '3', '4', '5', '6']
# 计数
print(a.count("a")); # 1
# 编码 encode
a = "我";
e1 = a.encode(); # 将a,通过默认编码(utf-8)后,得到的字节序列
print(e1); # b'\xe6\x88\x91'
# byte:字节; 整体为一个字节序列
# 1个汉字,通过utf-8编码后,得到3个字节
e2 = a.encode('gbk'); # 将a,通过gbk后,得到的字节序列
print(e2); # b'\xce\xd2'
# 一个汉字通过gbk编码,得到两个字节
acsii码 ----》ISO8859-1 单字节 (8位),只支持256个字符
GBK码表---》GBK编码---》1字节(ascii中的英文字符)或 两字节 (中日韩的文字) 2w+
Unicode码表----》utf-8编码 ---》变长(1-6字节不等) (英文字符1个字节,汉字大多是3个字节) 14w+ (应用最广泛,utf-8)编码有什么作用?
计算机只能存数字(0,1这样的二进制),那么对于文字语言符号等这些内容,该如何在计算机中表示呢编码/码表 !
文字符号《-----码表-----》数字
通过码表,就可以完成数字和文字符号的互相转换文字符号---编码/encode----》数字
文字符号《------解码/decode---------数字当我们存数据、传输数据时,都需要将字符通过编码转换成数字,才能进行传输;
读取数据,或接收数据时,再通过解码,还原展示原本的文字符号(观察一个txt文本文档的占用空间)
uf = b'\xe6\x88\x91'
gb = b'\xce\xd2';print(uf.decode());# 默认utf-8解码 我
print(gb.decode('gbk')) # 我
java中有没有类似的encode和decode的转换?
字符串--getBytes(编码)-->字节
字节---new String(数组,编码)--->字符串
字符串和数字互相转换
-java字符串和数字不能直接转,需要通过插入,
数字---char---string
(参照的是unicode码表)
String str = "";
Random r = new Random();
for(int i=0;i<10;i++) {
str = str+ (char)(r.nextInt(26)+65);
}
System.out.println(str);
-python没有char类型,单个字符串,就好像表示char一样
有两个内置函数可以使用
(参照的是unicode码表)
chr :数字---》字符
ord:字符-》数字
4、练习题
# 请生成长度为10的字符串,内容为随机的26个字母(A-Z)
import randoms = "";
for i in range(10):
s = s + chr(random.randint(65, 90));print(s);
习题1:
#生成100次0~9范围的整数
#将这些数字合并成一个大的字符串,打印出来
#统计这些数字中,每个数字出现多少次(例如,有几个0,几个1,几个2。。。。),打印出来
#找出出现次数最多的是哪个数字。import random
s = "";
time = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
for i in range(100):
number = random.randint(0, 9);
time[number] += 1;
s += str(number);
print("数字0-9出现的次数分别为:", end="")
for i in time:
print(i, end="、")
print("\n" + s)
习题2:打印emoji字符表。
for i in range(0x1f600, 0x1f64f):
print(chr(i), i, end=" ")
if i % 10 == 0:
print()