python学习笔记_基础

一.编译基础

1.1编译型语言和解释型语言的区别

对于编译型语言来说,在执行之前先要经过编译器将源码转换成 CPU 可识别的机器码文件(比如 Windows 下的 .exe 文件);解释型语言无需预先编译,而是由解释器逐行对源码进行解释,一边解释一边执行。

编译型语言:一次编译,无限次运行。

在运行的时候,我们只需要编译生成的可执行程序,此时就不再需要源代码和编译器,所以编译型语言可以脱离开发环境运行。

编译型语言通常是不能跨平台的,也就是不能在不同的操作系统之间随意切换。(java可以跨平台)

解释型语言:

需要源代码和解释器,所以说它无法脱离开发环境

解释型语言几乎都能跨平台,“一次编写,到处运行”是真实存在的。这里所说的跨平台,是指源代码跨平台,而非解释器跨平台。解释器用来将源代码转换成机器码,它本质上就是一个可执行程序,是绝对不能跨平台的。解释型语言之所以能够跨平台,是因为有了解释器这个中间层。在不同的平台下,解释器会将相同的源代码转换成不同的机器码,解释器帮助我们屏蔽了不同平台之间的差异性。

Python 属于典型的解释型语言,所以运行 Python 程序需要解释器的支持,只要你在不同的平台安装了不同的解释器,你的代码就可以随时随地运行,不用担心任何兼容性问题,真正实现了“一次编写,到处运行”。
 

类型原理优点缺点
编译型语言通过专门的编译器,将所有源代码一次性转换成特定平台(Windows、Linux、macOS等)的机器码(以可执行文件的形式存在)。编译一次后,脱离了编译器也能运行,并且运行效率高。可移植性差,不够灵活。
解释型语言通过专门的解释器,根据需要可以将部分或全部源代码转换成特定平台(Windos、Linux、macOS等)的机器码。跨平台性好,通过不同的解释器,将相同的源代码解释成不同平台下的机器码。一边执行一边转换,效率较低。
 

1.2 python基本规则

1.2.1注释

python使用井号#作为单行注释的符号,语法格式为:

# 注释内容

Python 多行注释:多行注释通常用来为 Python 文件、模块、类或者函数等添加版权或者功能描述信息。
Python 使用三个连续的单引号'''或者三个连续的双引号"""注释多行内容,具体格式如下:

'''
使用 3 个单引号分别作为注释的开头和结尾
可以一次性注释多行内容
这里面的内容全部是注释内容
'''
"""
使用 3 个双引号分别作为注释的开头和结尾
可以一次性注释多行内容
这里面的内容全部是注释内容
"""

1.2.2缩进

在 Python 中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束。

注意,Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现。但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个缩进量(默认情况下,一个 Tab 键就表示 4 个空格)。

Python 对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样,否则解释器会报 SyntaxError 异常错误。

1.2.3编写规范

Python 采用 PEP 8 作为编码规范,其中 PEP 是 Python Enhancement Proposal(Python 增强建议书)的缩写,8 代表的是 Python 代码的样式指南。下面仅给大家列出 PEP 8 中初学者应严格遵守的一些编码规则

1.

#推荐
import os
import sys
#不推荐
import os,sys

 2.

#推荐
s=("C语言中文网是中国领先的C语言程序设计专业网站,"
"提供C语言入门经典教程、C语言编译器、C语言函数手册等。")
#不推荐
s="C语言中文网是中国领先的C语言程序设计专业网站,\
提供C语言入门经典教程、C语言编译器、C语言函数手册等。"

注意,此编程规范适用于绝对大多数情况,但以下 2 种情况除外:

  • 导入模块的语句过长。
  • 注释里的 URL。

 3.通常情况下,在运算符两侧、函数参数之间以及逗号两侧,都建议使用空格进行分隔

4.使用必要的空行可以增加代码的可读性,通常在顶级定义(如函数或类的定义)之间空两行,而方法定义之间空一行,另外在用于分隔某些功能的位置也可以空一行。

1.2.4 内置函数

内置函数和标准库函数是不一样的。

Python 解释器也是一个程序,它给用户提供了一些常用功能,并给它们起了独一无二的名字,这些常用功能就是内置函数。Python 解释器启动以后,内置函数也生效了,可以直接拿来使用。

Python 标准库相当于解释器的外部扩展,它并不会随着解释器的启动而启动,要想使用这些外部扩展,必须提前导入。Python 标准库非常庞大,包含了很多模块,要想使用某个函数,必须提前导入对应的模块,否则函数是无效的。

内置函数是解释器的一部分,它随着解释器的启动而生效;标准库函数是解释器的外部扩展,导入模块以后才能生效。一般来说,内置函数的执行效率要高于标准库函数。

Python 解释器一旦启动,所有的内置函数都生效了;而导入标准库的某个模块,只是该模块下的函数生效,并不是所有的标准库函数都生效。

表 1 Python 3.x内置函数
内置函数
abs()delattr()hash()memoryview()set()
all()dict()help()min()setattr()
any()dir()hex()next()slicea()
ascii()divmod()id()object()sorted()
bin()enumerate()input()oct()staticmethod()
bool()eval()int()open()str()
breakpoint()exec()isinstance()ord()sum()
bytearray()filter()issubclass()pow()super()
bytes()float()iter()print()tuple()
callable()format()len()property()type()
chr()frozenset()list()range()vars()
classmethod()getattr()locals()repr()zip()
compile()globals()map()reversed()__import__()
complex()hasattr()max()round()

1.2.5 基础语法:等待用户输入

#!/usr/bin/python
# -*- coding: UTF-8 -*-

input("按下 enter 键退出,其他任意键显示...\n")

python2和python3不同

 二.Python基础

2.1变量和运算

>>> n = 10
>>> print(n)  #将变量传递给函数
10
>>> m = n * 10 + 5  #将变量作为四则运算的一部分
>>> print(m)
105
>>> print(m-30)  #将由变量构成的表达式作为参数传递给函数
75
>>> m = m * 2  #将变量本身的值翻倍
>>> print(m)
210
>>> url = "http://c.biancheng.net/cplus/"
>>> str = "C++教程:" + url  #字符串拼接
>>> print(str)
C++教程:http://c.biancheng.net/cplus/

Python 是弱类型的语言

在强类型的编程语言中,定义变量时要指明变量的类型,而且赋值的数据也必须是相同类型的,C语言、C++、Java 是强类型语言的代表。弱类型语言有两个特点:

  • 变量无须声明就可以直接赋值,对一个不存在的变量赋值就相当于定义了一个新变量。
  • 变量的数据类型可以随时改变,比如,同一个变量可以一会儿被赋值为整数,一会儿被赋值为字符串。

注意,弱类型并不等于没有类型!弱类型是说在书写代码时不用刻意关注类型,但是在编程语言的内部仍然是有类型的。我们可以使用 type() 内置函数类检测某个变量或者表达式的类型

>>> num = 10
>>> type(num)
<class 'int'>
>>> num = 15.8
>>> type(num)
<class 'float'>
>>> num = 20 + 15j
>>> type(num)
<class 'complex'>
>>> type(3*15.6)
<class 'float'>

2.1.1 int

有些强类型的编程语言会提供多种整数类型,每种类型的长度都不同,能容纳的整数的大小也不同,开发者要根据实际数字的大小选用不同的类型。例如C语言提供了 short、int、long、long long 四种类型的整数,它们的长度依次递增,初学者在选择整数类型时往往比较迷惑,有时候还会导致数值溢出。
而 Python 则不同,它的整数不分类型,或者说它只有一种类型的整数。Python 整数的取值范围是无限的,不管多大或者多小的数字,Python 都能轻松处理。

整数的不同进制

#十六进制
hex1 = 0x45
hex2 = 0x4Af
print("hex1Value: ", hex1) # hex1Value:  69
print("hex2Value: ", hex2) # hex2Value:  1199

#二进制
bin1 = 0b101
print('bin1Value: ', bin1) # bin1Value:  5
bin2 = 0B110
print('bin2Value: ', bin2) # bin2Value:  6

#八进制
oct1 = 0o26
print('oct1Value: ', oct1) # oct1Value:  22
oct2 = 0O41
print('oct2Value: ', oct2) # oct2Value:  33

数字分隔符

为了提高数字的的可读性,Python 3.x 允许使用下划线_作为数字(包括整数和小数)的分隔符。通常每隔三个数字添加一个下划线,类似于英文数字中的逗号。下划线不会影响数字本身的值。

click = 1_301_547
distance = 384_000_000
print("Python教程阅读量:", click)
print("地球和月球的距离:", distance)

'''
Python教程阅读量:1301547
地球和月球的距离:384000000
'''

2.1.2 float

Python 小数的指数形式的写法为:aEn 或 aen

a 为尾数部分,是一个十进制数;n 为指数部分,是一个十进制整数;Ee是固定的字符,用于分割尾数部分和指数部分。整个表达式等价于 a×10n。

指数形式的小数举例:

  • 2.1E5 = 2.1×105,其中 2.1 是尾数,5 是指数。
  • 3.7E-2 = 3.7×10-2,其中 3.7 是尾数,-2 是指数。
  • 0.5E7 = 0.5×107,其中 0.5 是尾数,7 是指数。

 注意,只要写成指数形式就是小数,即使它的最终值看起来像一个整数。例如 14E3 等价于 14000,但 14E3 是一个小数。

Python 只有一种小数类型,就是 float。C语言有两种小数类型,分别是 float 和 double:float 能容纳的小数范围比较小,double 能容纳的小数范围比较大。

2.1.3复数类型(complex)

复数(Complex)是 Python 的内置类型,直接书写即可。换句话说,Python 语言本身就支持复数,而不依赖于标准库或者第三方库。
复数由实部(real)和虚部(imag)构成,在 Python 中,复数的虚部以j或者J作为后缀,具体格式为:a + bj

c1 = 12 + 0.2j
print("c1Value: ", c1)
print("c1Type", type(c1))

c2 = 6 - 1.2j
print("c2Value: ", c2)

#对复数进行简单计算
print("c1+c2: ", c1+c2) #(a+bi)+(c+di)=(a+c)+(b+d)i
print("c1*c2: ", c1*c2) #(a+bi)(c+di)=(ac-bd)+(bc+ad)i

'''
c1Value:  (12+0.2j)
c1Type <class 'complex'>
c2Value:  (6-1.2j)
c1+c2:  (18-1j)
c1*c2:  (72.24-13.2j)
'''

浮点数精度问题:

>>> 0.1+0.2
0.30000000000000004

>>> 0.1+0.1-0.2
0.0

>>> 0.1+0.1+0.1-0.3
5.551115123125783e-17

>>> 0.1+0.1+0.1-0.2
0.10000000000000003

产生原因:十进制和数和二进制数的转换(例如:0.1(10)​=0.00011001100110011...(2)​)

解决办法:可以使用 decimal 模块。如果 decimal (十进制)模块还是无法满足需求,还可以使用 fractions(分数) 模块

#使用模块前,需要使用 import 引入
import decimal

a = decimal.Decimal("10.0")
b = decimal.Decimal("3")
print(10.0/3)
print(a/b)
输出:3.3333333333333335
输出:3.333333333333333333333333333
#引入 decimal 模块
from fractions import Fraction

print(10/3)
print(Fraction(10,3))
输出:3.3333333333333335
输出:10/3

2.1.4 字符串

Python 中的字符串必须由双引号" "或者单引号' '包围。

1.处理字符串中的引号的:

当字符串内容中出现引号时,我们需要进行特殊处理,否则 Python 会解析出错,例如:

'I'm a great coder!'

由于上面字符串中包含了单引号,此时 Python 会将字符串中的单引号与第一个单引号配对,这样就会把'I'当成字符串,而后面的m a great coder!'就变成了多余的内容,从而导致语法错误。

处理办法:

1) 对引号进行转义

在引号前面添加反斜杠\就可以对引号进行转义,让 Python 把它作为普通文本对待

2) 使用不同的引号包围字符串

如果字符串内容中出现了单引号,那么我们可以使用双引号包围字符串,反之亦然。

2.字符串换行

Python 不是格式自由的语言,它对程序的换行、缩进都有严格的语法要求。要想换行书写一个比较长的字符串,必须在行尾添加反斜杠\

s2 = 'It took me six months to write this Python tutorial. \
    Please give me more support. \
    I will keep it updated.'


num = 20 + 3 / 4 + \
    2 * 3
print(num)

上面 s2 字符串的比较长,所以使用了转义字符\对字符串内容进行了换行,这样就可以把一个长字符串写成多行。Python 也支持表达式的换行。

3.python的原始字符串

Python 字符串中的反斜杠\有着特殊的作用,就是转义字符。

为了解决转义字符的问题,Python 支持原始字符串。

在普通字符串或者长字符串的开头加上r前缀,就变成了原始字符串,具体格式为:

str1 = r'原始字符串内容'
str2 = r"""原始字符串内容"""

rstr = r'D:\Program Files\Python 3.8\python.exe'
print(rstr)
str1 = r'I\'m a great coder!'
print(str1)
#I\'m a great coder! 
#Python 原始字符串中的反斜杠仍然会对引号进行转义,因此原始字符串的结尾处不能是反斜杠,否则字符串结尾处的引号会被转义,导致字符串不能正确结束。


str1 = r'D:\Program Files\Python 3.8' '\\'
print(str1)
#我们先写了一个原始字符串r'D:\Program Files\Python 3.8',紧接着又使用'\\'写了一个包含转义字符的普通字符串,Python 会自动将这两个字符串拼接在一起,所以上面代码的输出结果是:D:\Program Files\Python 3.8\

2.1.5 bytes类型及用法

字节串(bytes)和字符串(string)的对比:

  • 字符串由若干个字符组成,以字符为单位进行操作;字节串由若干个字节组成,以字节为单位进行操作。
  • 字节串和字符串除了操作的数据单元不同之外,它们支持的所有方法都基本相同。
  • 字节串和字符串都是不可变序列,不能随意增加和删除数据。

bytes 只负责以字节序列的形式(二进制形式)来存储数据,至于这些数据到底表示什么内容(字符串、数字、图片、音频等),完全由程序的解析方式决定。如果采用合适的字符编码方式(字符集),字节串可以恢复成字符串;反之亦然,字符串也可以转换成字节串。

bytes 类型的数据非常适合在互联网上传输,可以用于网络通信编程;bytes 也可以用来存储图片、音频、视频等二进制格式的文件。

字符串和 bytes 存在着千丝万缕的联系,我们可以通过字符串来创建 bytes 对象,或者说将字符串转换成 bytes 对象。有以下三种方法可以达到这个目的:

  • 如果字符串的内容都是 ASCII 字符,那么直接在字符串前面添加b前缀就可以转换成 bytes。
  • bytes 是一个类,调用它的构造方法,也就是 bytes(),可以将字符串按照指定的字符集转换成 bytes;如果不指定字符集,那么默认采用 UTF-8。
  • 字符串本身有一个 encode() 方法,该方法专门用来将字符串按照指定的字符集转换成对应的字节串;如果不指定字符集,那么默认采用 UTF-8。
#通过构造函数创建空 bytes
b1 = bytes()
#通过空字符串创建空 bytes
b2 = b''

#通过b前缀将字符串转换成 bytes
b3 = b'http://c.biancheng.net/python/'
print("b3: ", b3)
print(b3[3])  #输出的是ascii码
print(b3[7:22])

#为 bytes() 方法指定字符集
b4 = bytes('C语言中文网8岁了', encoding='UTF-8')
print("b4: ", b4)

#通过 encode() 方法将字符串转换成 bytes
b5 = "C语言中文网8岁了".encode('UTF-8')
print("b5: ", b5)

#通过 decode() 方法将 bytes 转换成字符串
str1 = b5.decode('UTF-8')
print("str1: ", str1)

"""
b3:  b'http://c.biancheng.net/python/'
112
b'c.biancheng.net'
b4:  b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x918\xe5\xb2\x81\xe4\xba\x86'
b5:  b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x918\xe5\xb2\x81\xe4\xba\x86'
str1:  C语言中文网8岁了
"""

从运行结果可以发现,对于非 ASCII 字符,print 输出的是它的字符编码值(十六进制形式),而不是字符本身。非 ASCII 字符一般占用两个字节以上的内存,而 bytes 是按照单个字节来处理数据的,所以不能一次处理多个字节。

bytes 类也有一个 decode() 方法,通过该方法可以将 bytes 对象转换为字符串。

2.1.6 bool布尔类型

布尔类型可以当做整数来对待,即 True 相当于整数值 1,False 相当于整数值 0

2.1.7 input()函数:获取用户输入的字符串

input() 是 Python 的内置函数,用于从控制台读取用户输入的内容。input() 函数总是以字符串的形式来处理用户输入的内容,所以用户输入的内容可以包含任何字符。

input() 函数的用法为:

str = input(tipmsg)
  • str 表示一个字符串类型的变量,input 会将读取到的字符串放入 str 中。
  • tipmsg 表示提示信息,它会显示在控制台上,告诉用户应该输入什么样的内容;如果不写 tipmsg,就不会有任何提示信息。
a = input("Enter a number: ")
b = input("Enter another number: ")
print("aType: ", type(a))
print("bType: ", type(b))
result = a + b
print("resultValue: ", result)
print("resultType: ", type(result))

结果

Enter a number: 100↙
Enter another number: 45↙
aType:  <class 'str'>
bType:  <class 'str'>
resultValue:  10045
resultType:  <class 'str'>

我们可以使用 Python 内置函数将字符串转换成想要的类型,比如:

  • int(string) 将字符串转换成 int 类型;
  • float(string) 将字符串转换成 float 类型;
  • bool(string) 将字符串转换成 bool 类型。

2.1.8  print()函数高级用法

print() 函数的详细语法格式如下:

print (value,...,sep='',end='\n',file=sys.stdout,flush=False)
user_name = 'Charlie'
user_age = 8
#同时输出多个变量和字符串
print("读者名:",user_name,"年龄:",user_age)

#结果:
#读者名: Charlie 年龄: 8

#同时输出多个变量和字符串,指定分隔符
print("读者名:" ,user_name,"年龄:",user_age,sep='|')
#读者名:|Charlie|年龄:|8

在默认情况下,print() 函数输出之后总会换行,这是因为 print() 函数的 end 参数的默认值是“\n”,这个“\n”就代表了换行。如果希望 print() 函数输出之后不会换行,则重设 end 参数即可,例如如下代码:

#设置end 参数,指定输出之后不再换行
print(40,'\t',end="")
print(5O,'\t',end="")
print(60,'\t',end="")


#结果:
#40    50    60

file 参数指定 print() 函数的输出目标,file 参数的默认值为 sys.stdout,该默认值代表了系统标准输出,也就是屏幕,因此 print() 函数默认输出到屏幕。实际上,完全可以通过改变该参数让 print() 函数输出到特定文件中,例如如下代码:

f = open("demo.txt","w")#打开文件以便写入
print('沧海月明珠有泪',file=f)
print('蓝回日暖玉生烟',file=f)
f.close()

open() 函数用于打开 demo.txt 文件,接连 2 个 print 函数会将这 2 段字符串依次写入此文件,最后调用 close() 函数关闭文件

2.1.9 Python格式化字符串(格式化输出) 

Python格式化字符串(格式化输出) (biancheng.net)

2.1.10 类型转换,Python数据类型转换函数大全

表 2 常用数据类型转换函数
函 数作 用
int(x)将 x 转换成整数类型
float(x)将 x 转换成浮点数类型
complex(real,[,imag])创建一个复数
str(x)将 x 转换为字符串
repr(x)将 x 转换为表达式字符串
eval(str)计算在字符串中的有效 Python 表达式,并返回一个对象
chr(x)将整数 x 转换为一个字符
ord(x)将一个字符 x 转换为它对应的整数值
hex(x)将一个整数 x 转换为一个十六进制字符串
oct(x)将一个整数 x 转换为一个八进制的字符串

2.1.11 三目运算符(三元运算符)

if a>b:
    max = a;
else:
    max = b;

 等价于:

max = a if a>b else b

2.2python序列(Sequence):列表(list)、元组(tuple)、字典(dict)和集合(set)

Python 序列(Sequence)是指按特定顺序依次排列的一组数据,它们可以占用一块连续的内存,也可以分散到多块内存中。Python 中的序列类型包括列表(list)、元组(tuple)、字典(dict)和集合(set)。

所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。

为了更形象的认识序列,可以将它看做是一家旅店,那么店中的每个房间就如同序列存储数据的一个个内存空间,每个房间所特有的房间号就相当于索引值。也就是说,通过房间号(索引)我们可以找到这家旅店(序列)中的每个房间(内存空间)。

在 Python 中,序列类型包括字符串、列表、元组、集合和字典,这些序列支持以下几种通用的操作,但比较特殊的是,集合和字典不支持索引、切片、相加和相乘操作。

字符串也是一种常见的序列,它也可以直接通过索引访问字符串内的字符。

2.2.1

三.python字符串常用方法

3.1字符串拼接

在 Python 中拼接(连接)字符串很简单,可以直接将两个字符串紧挨着写在一起,具体格式为:

strname = "str1" "str2"
str1 = "Python教程" "http://c.biancheng.net/python/"
print(str1)
str2 = "Java" "Python" "C++" "PHP"
print(str2)

'''
Python教程http://c.biancheng.net/python/
JavaPythonC++PHP
'''

需要注意的是,这种写法只能拼接字符串常量

如果需要使用变量,就得借助+运算符来拼接,具体格式为:

strname = str1 + str2
name = "C++教程"
url = "http://c.biancheng.net/cplus/"
info = name + "的网址是:" + url
print(info)

#C++教程的网址是:http://c.biancheng.net/cplus/

 我们需要将字符串和数字拼接在一起,而 Python 不允许直接拼接数字和字符串,所以我们必须先将数字转换成字符串。可以借助 str() 和 repr() 函数将数字转换为字符串,它们的使用格式为:

str(obj)
repr(obj)
#obj 表示要转换的对象,它可以是数字、列表、元组、字典等多种类型的数据。
name = "C语言中文网"
age = 8
course = 30
info = name + "已经" + str(age) + "岁了,共发布了" + repr(course) + "套教程。"
print(info)
#C语言中文网已经8岁了,共发布了30套教程。

3.2 截取字符串

获取单个字符:

strname[index]
url = 'http://c.biancheng.net/python/'
#获取索引为10的字符
print(url[10]) # i
#获取索引为 6 的字符
print(url[-6]) #y

获取多个字符

strname[start : end : step]
url = 'http://c.biancheng.net/java/'
#获取索引从7处到22(不包含22)的子串
print(url[7: 22]) 
#获取索引从7处到-6的子串
print(url[7: -6]) 
#获取索引从-21到6的子串
print(url[-21: -6])
#从索引3开始,每隔4个字符取出一个字符,直到索引22为止
print(url[3: 22: 4])

'''
c.biancheng.net
c.biancheng.net
c.biancheng.net
pcaen
'''

3.3 获取字符串长度或字节数

len(string)

通过使用 encode() 方法,将字符串进行编码后再获取它的字节数。

>>> str1 = "人生苦短,我用Python"
>>> len(str1.encode())
27

>>> str1 = "人生苦短,我用Python"
>>> len(str1.encode('gbk'))
20

3.4 字符串切割

str.split(sep,maxsplit)

>>> str = "C语言中文网 >>> c.biancheng.net"
>>> str
'C语言中文网 >>> c.biancheng.net'
>>> list1 = str.split() #采用默认分隔符进行分割
>>> list1
['C语言中文网', '>>>', 'c.biancheng.net']
>>> list2 = str.split('>>>') #采用多个字符进行分割
>>> list2
['C语言中文网 ', ' c.biancheng.net']
>>> list3 = str.split('.') #采用 . 号进行分割
>>> list3
['C语言中文网 >>> c', 'biancheng', 'net']
>>> list4 = str.split(' ',4) #采用空格进行分割,并规定最多只能分割成 4 个子串
>>> list4
['C语言中文网', '>>>', 'c.biancheng.net']
>>> list5 = str.split('>') #采用 > 字符进行分割
>>> list5
['C语言中文网 ', '', '', ' c.biancheng.net']
>>>

3.5 合并字符串

使用 join() 方法合并字符串时,它会将列表(或元组)中多个字符串采用固定的分隔符连接在一起。例如,字符串“c.biancheng.net”就可以看做是通过分隔符“.”将 ['c','biancheng','net'] 列表合并为一个字符串的结果。

newstr = str.join(iterable)

 此方法中各参数的含义如下:

  1. newstr:表示合并后生成的新字符串;
  2. str:用于指定合并时的分隔符;
  3. iterable:做合并操作的源字符串数据,允许以列表、元组等形式提供。
>>> list = ['c','biancheng','net']
>>> '.'.join(list)
'c.biancheng.net'
>>> dir = '','usr','bin','env'
>>> type(dir)
<class 'tuple'>
>>> '/'.join(dir)
'/usr/bin/env'

3.6 统计字符串出现的次数

str.count(sub[,start[,end]])
  1. str:表示原字符串;
  2. sub:表示要检索的字符串;
  3. start:指定检索的起始位置,也就是从什么位置开始检测。如果不指定,默认从头开始检索;
  4. end:指定检索的终止位置,如果不指定,则表示一直检索到结尾。
>>> str = "c.biancheng.net"
>>> str.count('.')
2
>>> str = "c.biancheng.net"
>>> str.count('.',1)
2
>>> str.count('.',2)
1
>>> str = "c.biancheng.net"
>>> str.count('.',2,-3)
1
>>> str.count('.',2,-4)
0

复习笔记,参考的原文网站:Python文件操作(I/O) (biancheng.net)
Python 变量类型 | 菜鸟教程 (runoob.com)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值