python机器学习1 | Python基础 | 用于查找

Chapter1 Python基础|用于查找1

为便于搜索,查找知识,我在学习过程中将课程讲义转化为CSDN博客。其中加入了我自己的理解和记录,但整体内容的版权归布树辉老师所有。

一、Python基础

(一)print函数

1.直接输出

print("Hello World")

2.换行输出

1)无效换行
print('Hey')
a = 'line1\
line2\
\
'
print(a)

其中+换行是没有效果的,输出还是一整行。
输出是:
Hey
line1line2

2)有效换行
print("""My name is Rajath Kumar M.P.

I love Python.""")

输出是:
My name is Rajath Kumar M.P.

I love Python.

输出多行的时候需要用三个双引号

3.连接

1)空格连接
string1 = 'World'
print('Hello', string1)

string2 = '!'
print('Hello', string1, string2)

输出:
Hello World
Hello World !

2)直接连接
print('Hello' + string1 + string2)

输出:
HelloWorld!

4.数据类型转换

1)单个变量的类型转换
print("Actual Number = %d" % 18)
print("Float of the number = %f" % 18)
print("Octal equivalent of the number = %o" % 18)
print("Hexadecimal equivalent of the number = %x" % 18)
print("Exponential equivalent of the number = %e" % 18)

输出:
Actual Number = 18
Float of the number = 18.000000
Octal equivalent of the number = 22
Hexadecimal equivalent of the number = 12
Exponential equivalent of the number = 1.800000e+01

2)多个变量
print("Hello %s %s" % (string1,string2))

5.其他

1)鸡肋功能
print("I want to be printed %s" % 'here')
print("I want to be printed " + 'here')
#输出结果一样,所以没有比要用第一种
2)重复输出

\n 表示换行输出

print("Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug")

输出:
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug

3)split() 切片处理
print("\n".join("Jan Feb Mar Apr May Jun Jul Aug".split(" ")))

输出同上。
split 是进行切片处理,这里是在 \n 的位置切片,转换为多个字符串。

4)\t tab对齐
print("""
Routine:
\t- Eat
\t- Sleep\n\t- Repeat
""")

输出:
Routine:- Eat- Sleep- Repeat

(二)控制输出数字的宽度、精度

1."%f"默认精度宽度为6

print("%f" % 3.121312312312)

输出:3.121312

2.控制小数点后位数

print("%.5f" % 3.121312312312)

输出:3.12131

3.设置宽度

1)一般设置,设置宽度和精度
print("%9.5f" % -33.121312312312)

输出:-33.12131
这里包括负号和小数点一共9位。

2)补零设置
print("%020.5f" % 3.121312312312)
print("%20.5f" % 3.121312312312)

第一个输出:00000000000003.12131(用零补全)
第二个默认用空格补全。

3)一般设置,仅设置宽度
print("% 9f" % 3.121312312312)
print("% 9f" % -3.121312312312)

输出:
3.121312
-3.121312
宽度的设置是包括符号的,第一个默认有“+”号。精度没有指定的话就是6位。

print("%+9f" % 3.121312312312) #能输出“+”号
print("% 9f" % -3.121312312312)

输出:
+3.121312
-3.121312

4)左对齐,右补齐
print("%-9.3f" % 3.121312312312)

输出:
在这里插入图片描述

(三)数据结构-列表

1.列表声明

1)声明空列表

有两种方式

#1.
a = []
#2.
a = list
2)声明非空列表
x = ['apple', 'orange', 'peach']
print(x)

输出:
[‘apple’, ‘orange’, ‘peach’]

输出带一个中括号

2.索引

1)简单索引列表一个元素

举例:

x = ['apple','orange','peach']
print(x[0]) #输出apple
print(x[-1]) #输出peach(人性化)
2)列表嵌套&连接

使用“,”是嵌套,会变成多维的,使用“+”是连接,不会增加维数。

x = ['apple','orange','peach']
y = ['carrot','potato']
z  = [x,y, 'Test']
print(z)  #输出:[['apple', 'orange', 'peach'], ['carrot', 'potato'], 'Test']
print(z[0][1]) #输出:orange
#要输出整个维度
print(z[0]) #输出:['apple', 'orange', 'peach']
x = ['apple','orange','peach']
y = ['carrot','potato']
print(x + y) #输出:['apple', 'orange', 'peach', 'carrot', 'potato']

3.切片(直接切片)

(Python特有的)
列表是从0开始数起的。
中括号中最后一个数是不输出的。

num = [2,3,2,3,4,5,6,7,8,9]
print(num[1:4]) #输出:[3, 2, 3]
print(num[0:]) #输出:[2, 3, 2, 3, 4, 5, 6, 7, 8, 9]
print(num[:]) #输出:[2, 3, 2, 3, 4, 5, 6, 7, 8, 9]
print(num) #输出:[2, 3, 2, 3, 4, 5, 6, 7, 8, 9]
print(num[0:4]) #输出:[2, 3, 2, 3]
print(num[4:]) #输出:[4, 5, 6, 7, 8, 9]
print(num[:9:3]) #固定步长,( :9)表示0~8之间,9表示步长,所以是从num[0]开始,每过3个就输出1个。输出:[2, 3, 6]

4.列表的内置函数

这些函数只针对列表使用

1)len 计算列表长度
num = [2,3,2,3,4,5,6,7,8,9]
print(len(num)) #输出:10
2)min & max

检索数字的最小值和最大值

num = [2,3,2,3,4,5,6,7,8,9]
print(min(num)) #输出:2
print(max(num)) #输出:9

检索字符串的最小值和最大值(根据ASCII码)

mlist = ['bzaa','ds','nc','az','z','klm']
print(max(mlist)) #输出z
print(min(mlist)) #输出az
nlist = ['1','94','93','1000'] #带引号,是字符串
print(max(nlist)) #输出94
print(min(nlist)) #输出1

检索最长和最短的字符串

names = ['Earth','Jet', 'Air','Fire','Water']
print(max(names, key=len)) #输出:Earth
print(min(names, key=len)) #输出:Jet,因为Jet在Air之前,因此现检索到Jet
3)in 检查某个元素是否在列表中

传统的做法是采用for循环,而python不需要。

x = ['apple','orange','peach']
y = ['carrot','potato']
print('apple' in x) #检查x中有没有apple,有,输出:True
print('apple' in y) #检查y中有没有apple,没有,输出:False
4)list 字符串转换为列表
print(list('hello')) #输出:['h', 'e', 'l', 'l', 'o']
5)append 在列表最后添加元素

在列表最后添加单一元素

lst = [1,1,4,8,7]
lst.append(1)
print(lst) #输出:[1, 1, 4, 8, 7, 1]
'''
错误的做法:
lst = [1,1,4,8,7]
print(lst.append(1)) 
'''

在列表中嵌套列表

lst = [1,1,4,8,7]
lst1 = [5,4,2,8]
lst.append(lst1)
print(lst) #输出:[1, 1, 4, 8, 7, [5, 4, 2, 8]]
6)count计算特定元素的数量
lst = [1,1,4,8,7]
lst.append(1)
print(lst.count(1)) #输出:3
7)extend 在列表后面连接另一个列表

对比append

lst = [1,1,4,8,7]
lst1 = [5,4,2,8]
lst.extend(lst1)
print(lst) #输出:[1, 1, 4, 8, 7, 5, 4, 2, 8]
8)index???
9)insert(x,y) 插入元素&替换元素
#错误示例:由于lst和lst1的id是一样的,所以输出是一样的,只认一个处理
lst = lst1 = [1,1,4,8,7]
lst.insert(2,'name')
print(lst) #输出:[1, 1, 'name', 4, 8, 7]
lst1[2] = 'name'
print(lst1) #输出:[1, 1, 'name', 4, 8, 7]
#正确做法
lst = [1,1,4,8,7]
lst1 = [1,1,4,8,7]
#插入
lst.insert(2,'name')
print(lst) #输出:[1, 1, 'name', 4, 8, 7]
#替换
lst1[2] = 'name'
print(lst1) #输出:[1, 1, 'name', 8, 7]
10)pop堆栈(有点像索引)
lst = [1,1,4,8,7]
lst.pop()
print(lst) #输出:[1, 1, 4, 8],最后一个不输出
lst = [1,1,4,8,7]
lst.pop(2)
print(lst) #输出:[1, 1, 8, 7],lst[2]不输出
lst = [1,1,4,8,7]
lst.pop(-2)
print(lst) #输出:[1, 1, 4, 7],lst[-2]不输出
11)remove移除列表元素
lst = [1,1,4,8,7]
lst.remove(4)
print(lst) #输出[1, 1, 8, 7]
lst1 = [1, 1, 4, 8, 'Python', 7]
lst1.remove("Python")
print(lst1) #输出[1, 1, 4, 8, 7]
12)del (=remove)
lst = [1, [5, 4, 2, 8], 1, 4, 8, 7]
del lst[1]
print(lst) #输出:[1, 1, 4, 8, 7]
13)reverse反转列表中的元素
lst = [1, [5, 4, 2, 8], 1, 4, 8, 7]
lst.reverse()
print(lst) #输出:[7, 8, 4, 1, [5, 4, 2, 8], 1]
14)sort 列表元素升序、降序排列

升序:

lst = [1, 1, 4, 8, 7]
lst.sort()
print(lst) #输出:[1, 1, 4, 7, 8]

降序:

lst = [1, 1, 4, 8, 7]
lst.sort(reverse=True)
print(lst) #输出:[8, 7, 4, 1, 1]

如果列表是字符串,按ASCII码排序
如果按字符串长度排序,则加上key=len(min和max也有这个功能):

names = ['apple', 'orange', 'peach']
names.sort(key=len)
print(names) #输出:['apple', 'peach', 'orange']
names.sort(key=len,reverse=True)
print(names) #输出:['orange', 'apple', 'peach']

5.复制一个列表

1)全部复制
lst = [2,1,4,3]
lst1 = lst
print(lst)
print(lst1)
print(id(lst))
print(id(lst1))
'''
输出:
[2, 1, 4, 3]
[2, 1, 4, 3]
1319752557056
1319752557056
'''
2)部分复制
lst = [2,1,4,3]
lst1 = lst[1:3]
print(lst1) #输出:[1, 4]

(四)数据结构-元组(时间有限,元组和集合的部分暂且不学,过后再学吧)

元组和列表相似,但是列表中的元素可以修改,而元组不可以。

1.divmod (a,b),返回(商,余数)

(五)数据结构-集合

(六)数据结构-字符串

1.引住字符串的引号

对于单行的字符串,单引号和双引号均可;对于对行的字符串,需要用三个单引号

2.列表姐妹

字符串是类似于列表的,可以看作是列表

string = 'Taj Mahal is beautiful'
print(string[4]) #输出:M
print(string[9]) #输出: (空格)

3.字符串的内置函数

1)find 给出指定字符串的索引值

找特定的字符的位置

string = 'Taj Mahal is beautiful'
print(string.find('al')) #输出:7(因为al中的a为string[7])
print(string.find('am')) #输出:-1(因为没有找到)

在指定区间之间找特定字符的位置(一次只能找一个)

string = 'Taj Mahalj is beautiful'
print(string.find('j',1)) #输出:2
print(string.find('j',1,15)) #输出:2
2)capitalize 将字符串首字母大写
String3 = 'observe the first letter in this sentence. can you change this sentence'
print(String3.capitalize())
#输出:Observe the first letter in this sentence. can you change this sentence
3)center 将输出的字符串居中对齐

通过指定字段宽度将字符串居中对齐。

string1 = 'Taj Mahalj is beautiful'
string2 = 'Observe the first letter in this sentence.'
print(string1.center(70))
print(string2.center(70))

输出:
在这里插入图片描述

string1 = 'Taj Mahalj is beautiful'
string2 = 'Observe the first letter in this sentence.'
print(string1.center(70,'-'))
print(string2.center(70,'-'))

输出:
在这里插入图片描述

4)zfill 通过指定字段宽度来填充0
string1 = 'Taj Mahalj is beautiful'
print(string1.zfill(30))
#输出:0000000Taj Mahalj is beautiful
5)expandtabs 更改表符间距

\t 默认设置为8个空格

s = 'h\te\tl\tl\to'
print(s)
print(s.expandtabs(1))
print(s.expandtabs(8))

输出:
在这里插入图片描述

6)index(≈find)

如果find找不到会输出-1;index找不到会直接报错ValueError。

string = 'Taj Mahal is beautiful'
print(string.find('al')) #输出:7(因为al中的a为string[7])
print(string.find('am')) #输出:-1(因为没有找到)
print(string.index('al')) #输出:7
print(string.index('am'))

输出:
在这里插入图片描述

7)endswith 检查字符串结尾是否是指定字符

默认检查最后一个

string = 'Taj Mahal is beautiful'
print(string.endswith('y')) #输出:False
print(string.endswith('l')) #输出:True

可以指定检查区间

string = 'Taj Mahal is beautiful'
print(string.endswith('l',0)) #输出:True
print(string.endswith('M',0,5)) #输出:True
8)count() 童子字符串中的字符数
string = 'Taj Mahal is beautiful'
print(string.count('a',0)) #输出:4
print(string.count('a',5,10)) #输出:2
9)join() 在字符串中添加字符

在字符串元素间添加一个字符:

print('a'.join('*_-')) #a被加在每个元素之间,输出:*a_a-
print('\n'.join(['1', '2'])) #输出1和2分别为两行

把列表转化为字符串:

string = 'Taj Mahal is beautiful'
a = list(string) #字符串转化为列表
print(a) #输出:['T', 'a', 'j', ' ', 'M', 'a', 'h', 'a', 'l', ' ', 'i', 's', ' ', 'b', 'e', 'a', 'u', 't', 'i', 'f', 'u', 'l']
b = ''.join(a) #列表转化为字符串
print(b) #输出:Taj Mahal is beautiful

也可以在列表中插入,等于给把列表转换为字符串之后再插入的效果:

string = 'Taj Mahal is beautiful'
string1 = list(string)
c = '/'.join(string1)[18:]
d = '/'.join(string)[18:]
print(c) #输出: /i/s/ /b/e/a/u/t/i/f/u/l
print(d) #输出: /i/s/ /b/e/a/u/t/i/f/u/l
10)split() 切片
string = 'Taj Mahal is beautiful'
c = '/'.join(string)[16:]
print(c) #输出:l/ /i/s/ /b/e/a/u/t/i/f/u/l
e = c.split('/',3) #3指3个'/'
print(e) #输出:['l', ' ', 'i', 's/ /b/e/a/u/t/i/f/u/l']
print(len(e)) #输出:4
11)lower() 将任何大写字母转换为小写
string = 'Taj Mahal is beautiful'
print(string.lower()) #输出:taj mahal is beautiful
12)upper() 将任何小写字母转换为大写
string = 'Taj Mahal is beautiful'
print(string.upper()) #输出:TAJ MAHAL IS BEAUTIFUL
13)replace(‘a’, ‘b’) 将该a替换为b
string = 'Taj Mahal is beautiful'
print(string.replace('Taj Mahal', 'Anastasia')) #输出:Anastasia is beautiful
14)strip() 从右端和左端删除不需要的元素
f = '    hello      '
print(f.strip()) #输出:hello
f = '   ***----hello---*******     '
print(f.strip('*')) #输出:   ***----hello---*******
f1 = '***----hello---*******'
print(f1.strip('*')) #输出:----hello---
#指定的时候必须改元素在两端才会删除
print(f.strip(' *')) #输出:----hello---
print(f.strip(' *-')) #输出:hello
15)lstrip() & rstrip()

lstrip() 只删除左边的内容,而rstrip() 只删除右边的内容。

f = '   ***----hello---*******     '
print(f.lstrip(' *')) #输出:----hello---*******
print(f.rstrip(' *')) #输出:   ***----hello---

(七)词典(作业没用到,时间原因,现不记录了)

可以用用户定义的字符串索引特定的序列。

(八)控制流语句

1.if语句

2.if-else语句

3.if-elif语句

很简单,和C++差不多,格式稍微有点差别。例子:

x = 10
y = 12
if x > y:
    print("x>y")
elif x < y:
    print("x<y")
    if x==10:
        print("x=10")
    else:
        print("invalid")
else:
    print("x=y")

4.循环

1)for循环

除了数字的循环,还可以

list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for list1 in list_of_lists:
    print(list1)
'''
输出:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
'''
2)while

都是采用冒号和缩进。

5.break

和C++用法相同

6.continue

和C++用法相同

7.列表推导

快速生成所需的列表。
一般生成列表:

res = []
for i in range(1,11):
    x = 27*i
    res.append(x)
print(res) #输出:[27, 54, 81, 108, 135, 162, 189, 216, 243, 270]

快速生成列表:
记得用方括号框起来;
for前面是规定格式和输出内容的;

# 例1:
print([27*x for x in range(1,11)])
#输出:[27, 54, 81, 108, 135, 162, 189, 216, 243, 270]
# 例2:
print({str(27*x):27*x for x in range(1,20) if x<=10})
#输出:{'27': 27, '54': 54, '81': 81, '108': 108, '135': 135, '162': 162, '189': 189, '216': 216, '243': 243, '270': 270}

输出不用[],而用():

# 例3:
print(tuple((27*x for x in range(1,20) if x<=10)))
#输出:(27, 54, 81, 108, 135, 162, 189, 216, 243, 270)

两个for循环,先执行后一个,再执行前一个。

# 例4:
print([27*i+z for i in range(50) if i<5 for z in range(1,11)])
#输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118]

(九)函数

1.没有参数的函数

def firstfunc():
    print("Hey Rajath!")
    print("Rajath, How do you do?")
firstfunc()
'''
输出:
Hey Rajath!
Rajath, How do you do?
'''
funca=firstfunc
funca()
'''
输出:
Hey Rajath!
Rajath, How do you do?
'''
print(id(firstfunc)) #输出:2419421696352
print(id(funca)) #输出:2419421696352

2.有参数的函数

def firstfunc(username):
    print("Hey", username + '!')
    print(username + ',' ,"How do you do?")
name1 = "Anastasia"
firstfunc(name1)
'''
输出:
Hey Anastasia!
Anastasia, How do you do?
'''

3.返回语句

def times(x,y):
    z = x*y
    return z #也可以直接return x*y
c = times(4,5)
print(c) #输出:20

可以对函数进行标注,在调用help()语句的时候就可以查看标注:

def times(x,y):
    '''返回两个参数的乘积'''
    z = x*y
    return z
c = times(4,5)
print(c)
help(times)
'''
输出:
20
Help on function times in module __main__:

times(x, y)
    返回两个参数的乘积
'''

可以返回多个变量,但需要自己记住返回的顺序;或者直接声明格式。

def egfunc(eglist):
    highest = max(eglist)
    lowest = min(eglist)
    first = eglist[0]
    last = eglist[-1]
    return highest,lowest,first,last
eglist = [10,50,30,12,6,8,100]
a = egfunc(eglist)
print(a) #输出:(100, 6, 10, 100)
b,c,d,e = egfunc(eglist)
print('b =',b,'\n c =',c,'\n d =',d,'\n e =',e)
'''
输出:
b = 100
c = 6
d = 10
e = 100
'''

4.隐式参数

和C++几乎是一样的,很好理解,懒得打了,直接把老师的教程截图下来。
在这里插入图片描述

5.任意数量的参数

类似于指针,在参数前面使用*,1个、2个均可。

def add_n(*args):
    res = 0
    reslist = []
    for i in args:
        reslist.append(i)
    print(reslist)
    return sum(reslist)
s = add_n(1,2,3,4,5)
print(s)
'''
输出:
[1, 2, 3, 4, 5]
15
'''

6.全局和局部变量

和C++是一样的。

7.Lambda函数

可以认为是函数的简约版,没有函数名的定义,采用的定义方式类似于变量。
例子如下:

z = lambda x: x * x
print(z(8)) #输出:64
zz = lambda x, y: (x*y, x**y)
print(zz(2, 3)) #输出:(6, 8)
1)map() 对列表的每个函数定义的函数
list1 = [1,2,3,4,5,6,7,8,9]
list2 = [9,8,7,6,5,4,3,2,1]
eg1 = map(lambda x:x+2, list1)
print(list(eg1)) #输出:[3, 4, 5, 6, 7, 8, 9, 10, 11]
eg2 = map(lambda x,y:x+y, list1,list2)
print(list(eg2)) #输出:[10, 10, 10, 10, 10, 10, 10, 10, 10]

下面这部分没明白:
在这里插入图片描述

2)filter() 过滤表中的值
list1 = [1,2,3,4,5,6,7,8,9]
res = filter(lambda x:x<5,list1)
print(list(res))
#输出:[1, 2, 3, 4]

(十)class 类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值