1465-王同学-算法方向-推荐系统-就业:是 已关闭

1465-王同学-算法方向-推荐系统-就业:是 扫二维码继续学习 二维码时效为半小时

(0评价)
价格: 免费

字符串常用方法汇总

空白符: {制表符\t  换行符\n  空格 }

1、查找方法

len(a)  :字符串a的长度

a.startswith() 判断a是否以指定字符串开头

a.endswith() 判断a是否以指定字符串结尾

a.find() 定位第一次出现指定字符串的位置

a.rfind() 定位最后一次出现指定字符串的位置

a.count() 累计指定字符串一共出现的次数

注意⚠️:多行长段字符串要用三引号输入"""   """
>>> a='我是高淇,今年18 岁了,我在北京尚学堂科技上班。我的儿子叫高洛希,他6 岁了。我 是一个编程教育的普及者,希望影响6000 万学习编程的中国人。我儿子现在也开始学习编 程,希望他18 岁的时候可以超过我'
SyntaxError: EOL while scanning string literal

例子

a='''我是高淇,今年18岁了,我在北京尚学堂科技上班。我的儿子叫高洛希,他6岁了。我 是一个编程教育的普及者,希望影响6000万学习编程的中国人。我儿子现在也开始学习编 程,希望他18岁的时候可以超过我'''

>>> len(a)
98

>>> a.startswith("我是")
True
>>> a.endswith("超过我")
True

>>> a.find("今年")
5
>>> a.rfind("程")
85
>>> a.count("儿子")
2

2、去除首尾信息 

a.strip( ) 首尾

a.lstrip() 左边

a.rstrip() 右边

例子
>>> "**sxt***".strip("*")
'sxt'

>>>"      s*x*t    ".strip()

's*x*t'(默认去除空格)

>>> "**s*x*t***".lstrip("*")
's*x*t***'

>>> "**s*x*t***".rstrip("*")
'**s*x*t'

3、大小写转换(转换之后生成新的字符串,原字符串不变)

a.capitalize() 仅字符串开头首字母大写

a.title() 每个单词首字母大写

a.upper() 所有字符全大写

a.lower() 所有字符全小写

a.swapcase() 所有字母大小写交换

例子

a = "gaoqi love programming, love SXT"

>>> a.capitalize()
'Gaoqi love programming, love sxt'

>>> a.title()
'Gaoqi Love Programming, Love Sxt'

>>> a.upper()
'GAOQI LOVE PROGRAMMING, LOVE SXT'

>>> a.lower()
'gaoqi love programming, love sxt'

>>> a.swapcase()
'GAOQI LOVE PROGRAMMING, LOVE sxt'

4、格式排版

 

 

 

[展开全文]

字符串驻留

符合标识符规则的字符串:只能包含下划线、字母、数字

仅保存一份相同字符串-启用驻留机制(id相同)

>>> a = 'abd_33'
>>> b = 'abd_33'
>>> a is b
True
>>> a == b
True
>>> id(a)
140536471608752
>>> id(b)
140536471608752

 

成员操作符

in/not in 判断子字符串是否在字符串中

 

[展开全文]

1、字符串的分割

默认按照空白符分割

split( )

>>> a.split()
['to', 'be', 'or', 'not', 'to', 'be']

#在空格处分割

>>> a = "to be or not to be"
>>> a.split("b")
['to ', 'e or not to ', 'e']

#在两个b处分割,空格字符串也参与分割

2、合并

‘’.join()
>>> a = ['sxt','sxt100','sxt200']
>>> ''.join(a) #无缝合并
'sxtsxt100sxt200'
>>> '+'.join(a)#用+连接
'sxt+sxt100+sxt200'

3、对比+,join()

+ 操作一次就生成一个新的字符串,join仅新建一次对象(更推荐)

import time
time01 = time.time() #起始时间
a = ""
for i in range(1000000):
    a += "sxt"

time02 = time.time() #停止时间
print("运算时间:" + str(time02-time01))

time03 = time.time()
li = [] #定义列表
for i in range(1000000):
    li.append("sxt")

a = "".join(li)

time04 = time.time() #停止时间
print("运算时间:" + str(time04-time03))

[展开全文]

字符串切片slice操作

截取子字符串[起始偏移量start: 终止偏移量end :步长 step]

规则:包头不包尾,偏移量超出范围不报错

步长为1 ,一个一个取(默认是1)

步长为2,隔一个取一个

步长为负,反向提取,逆序排列

>>> a[:] #提取整个字符串
'abcQefg'

>>> a[2:] # [start:]从start 索引开始到字符串结尾
'cQefg'

>>> a[-4:]
'Qefg'

>>> a[2:4] # [start:end]从start 到end-1(不包尾)
'cQ'

>>> a[-4:-1]
'Qef'

>>> a[:4:2] #步长为2,隔一个取一个
'ac'
>>> a[::-1]
'gfeQcba'
>>> a[::-2]
'geca'

1. 将”to be or not to be”字符串倒序输出

>>> a = "to be or not to be"
>>> a[::-1]
'eb ot ton ro eb ot'

2. 将”sxtsxtsxtsxtsxt”字符串中所有的s 输出

>>> a = "sxt"*5
>>> a[::3]
'sssss'

 

[展开全文]

str():把其他数据类型转换成字符串

1.数字

>>> str(314)
'314'
1.科学计数法

>>> str(3.14e2)
'314.0'

3.布尔值

>>> str(True)
'True'

[] :提取字符

字符串的本质就是字符序列,在[]里面指定偏移量,可以提取该位置的单个字符。

正向:索引编号从0开始 ,到 len(str)-1

反向:-1开始, 到-len(str)

>>> a[0]
'a'
>>> a[6]
'g'
>>> a[-1]
'g'

>>> a[-7]
'a'
>>> a[7-2]
'f'

超出范围,报错

>>> a[-8]
Traceback (most recent call last):
  File "<pyshell#157>", line 1, in <module>
    a[-8]
IndexError: string index out of range


replace()

  1. 实现字符串的替换,创建了新字符串
  2. 字符串一旦定义好,是不可变的
  3. 变量重新指向了新创建的字符串

整个过程中,实际上是通过替换原字符串的字符,创建了新的字符串对象,并指向了变量a,且原字符串没有改变

字符串.replace()

>>> a = 'abcdefg'
>>> a = a.replace('d','Q') # 用Q替换d
>>> a
'abcQefg'

 

 

 

[展开全文]

转义字符

\+特殊字符:实现某些难以用字符表示的效果

1. 续行符 :行尾加\

多行输入,单行打印

>>> a = "asdkjhfkajhdkjd\
jsjhdbcjsh"
>>> print(a)
asdkjhfkajhdkjdjsjhdbcjsh

 

2. \' : 单引号, 避免创建字符串的歧义

例:

>>> a = 'I\'m a student'

>>> print(a)
I'm a student

3.\\: 反斜杠

>>> a = "a\\b"
>>> print(a)
a\b

4. \t : 横向制表符

>>> a = "aa\tbb\tcc"

>>> print(a)
aa    bb    cc

5. \r :回车

>>> a = "aa\rbb\rcc"
>>> print(a)
aa bb cc

字符串拼接

+ 将多个字符串拼接起来

有无+都可拼接,并形成新对象

  • +两端是数字,则为加法运算
  • +两端是字符串,则拼接
  • +两端类型不同,报错

>>> 'statistics'+ 'program'
'statisticsprogram'
>>> 'statistics''program'
'statisticsprogram'
>>> 'statistics'    'program'
'statisticsprogram'
>>> 

字符串复制

*

>>> a = 'wq'*3
>>> a
'wqwqwq'

不换行打印

调用print 时,会自动打印一个换行符,

print("今天")
print("昨天")
print("明天")

>>>

今天
昨天
明天

若不想换行,可以通过【 , end = “任意字符串”】

print("今天", end = '')
print("昨天" , end = '')
print("明天")

>>>

今天昨天明天

从控制台读取字符串

input(): 从控制台读取键盘输入的内容, 把键盘输入内容传给变量

>>> MyName = input("请输入您的姓名: ")
请输入您的姓名: 王清
>>> MyName
'王清'
>>> 

 

[展开全文]

字符串的特点

字符串的本质是:字符序列

单字符也是作为一个字符串使用的

字符串的编码

Python3 的字符:16 位Unicode 编码

Unicode编码:就是把字符与数字对应起来

ord( ):字符转换成 unicode码

chr( ):unicode码转换成对应的字符


>>> ord("清")
28165
>>> chr(28165)
'清'

创建字符串

单行字符串:''或""

>>> a = "I'm a teacher!"
>>> a
"I'm a teacher!"

多行字符串: 三个'''或"""

>>> ''' name = "王清"
age = 18'''
' name = "王清"\nage = 18'

空字符串:‘’,不包含任何字符和空格

>>> a = ''
>>> a
''

len() :查字符串中含有几个字符,字符串的长度

>>> len(a)
0
>>> 

换行符 \

>>> print("sdb\
shd")
sdbshd

[展开全文]

同一运算符 is、is not

is:比较的是对象的地址id

== :比较的是对象的值value 

is 比 == 效率高

整数缓存问题

Python 仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来

Pycharm 或者保存为文件执行,缓存范围是[-5,任意正整数])。

在缓存范围内,同一value的对象,id相同

>>> a = 100
>>> b = 100
>>> a is b
True


>>> a = 10000
>>> b = 10000
>>> a is b
False

[展开全文]

布尔值 

T-1 ,F-0,可以和数字相加

>>> a = True
>>> b = 30
>>> a + b
31

比较运算符

==

!=

<

<=

>

>=

逻辑运算符

>>> a = True
>>> b = False
>>> a or b
True
>>> a and b
False
>>> not b
True
 

 

[展开全文]

练习 mypy019

  1. 导入模块
  2. 定义点坐标:系列解包
  3. 绘制折线路径
  4. 计算起点到终点的距离
  5. 标注距离:turtle.write(distance )

         开方:导入math模块  math.sqrt()

import turtle

x1,y1 = 100,100
x2,y2 = 100,-100
x3,y3 = -100,-100
x4,y4 = -100,100

turtle.penup()
turtle.goto(x1,y1)
turtle.pendown()
turtle.goto(x2,y2)
turtle.goto(x3,y3)
turtle.goto(x4,y4)

import math
distance = math.sqrt((x1-x4)**2 + (y1-y4)**2)

turtle.write(distance)
 

[展开全文]

时间的表示

time.time() 获得当前时刻,返回的是以秒为单位

时间原点是:1970.01.01 

>>> import time
>>> time.time()
1607166331.3027651
>>> b = int(time.time())
>>> b
1607166360
>>> totalMinutes = b//60
>>> totalMinutes
26786106
>>> totalHours = totalMinutes // 60
>>> totalHours
446435
>>> totalDays = totalHours // 24
>>> totalDays
18601
>>> totalYears = totalDays // 365
>>> totalYears
50
 

[展开全文]

浮点数(float)

1、在内存中按照科学计数法储存,3.14 = 314e-2

>>> 324e-2
3.24

类型转换

1、float()

将整数、字符型整数和浮点数,转化为浮点数

>>> float("34")
34.0

>>> float(34)
34.0

>>> float("34.5")
34.5

四舍五入

1、round()

奇进偶舍:

如果保留位数的后一位如果是5,而且5后面不再有数,要根据应看尾数“5”的前一位决定是舍去还是进入: 如果是奇数则进入,如果是偶数则舍去。

>>> round(35.5)
36

>>> round(34.5)
34

注意⚠️类型转换:int()、float()、round()不改变原对象,而是产生新的对象

增强型赋值运算符

由“运算符 和 赋值符= 结合”构成,且中间无空格,对变量指向的对象本身进行运算操作

a += 2 等价于 a = a + 2

>>> a = 10
>>> a += 1
>>> a
11
>>> a -= 1
>>> a
10
>>> a /= 2
>>> a
5.0
>>> a *= 2
>>> a
10.0
>>> a //= 2
>>> a
5.0
>>> a //= 2
>>> a
2.0
>>> int(a)
2
>>> a **= 3
>>> a
8.0
>>> a %= 3
>>> 
>>> a
2.0
注意⚠️:通过运算把新产生的对象赋给变量,原对象被回收

 

 

 

[展开全文]

整数

二进制:0b 0,1, 逢二进一

八进制:0o 0~7,逢8进一

十六进制;0x 0~9 ,a~f

int()类型转换

1、浮点数:直接舍弃小数部分

>>> int(10.5)
10

2、布尔值 :T-1,F-0

>>> int(True)
1
>>> int(False)
0

3、整数格式的字符串(“1234”)直接转化为整数,其余格式报错

>>> int("2345")
2345

>>> int("23.34")
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    int("23.34")
ValueError: invalid literal for int() with base 10: '23.34'

自动转型

整数和浮点数混合运算,结果自动转为浮点数

3 + 7.0 = 10.0

python3 可以储存任意大小的整数

 

[展开全文]