Python基础(6)

1.知识点回顾

1.break和continue,pass

​ 重点掌握break的使用

​ 掌握break和continue的区别

  1. Number

    ​ int() float()

    ​ 随机数功能

    ​ random.choice(列表)

    ​ random.randrange(start,end,step)

    ​ random.random() 0~1

  2. tuple

    重点掌握list

  3. dict【掌握】

    ​ 字典的使用和key的特点

    ​ 遍历

二、Set集合

1.概念

Python中的集合跟数学上的集合是一致的

特点;不允许有重复元素,可以进行交集,并集或者差集的计算

set和dict类似,和dict的区别在于:set相当于只是存储了key的集合

本质:无序且无重复元素的集合

2.创建

代码演示:


#注意:set的创建没有特有的符号,主要是通过list,tuple,dict进行创建


#格式:集合名 = set(list或者tuple或者dict)    类似于list()    tuple()


#list

s1 = set([1,43,4,546,5,43,1,4])
print(s1)

#注意:重复元素在set中会被自动过滤掉



#tuple

s2 = set((34,54,54,5,56))
print(s2)


#dict


#注意:使用dict创建set的时候,只是将key作为set的元素进行创建

s3 = set({"zhangsan":20,"lisi":409,"jack":5748})
print(s3)

3.操作

3.1添加

代码演示:


#1.添加


#1.1add():在set的末尾添加元素

s1 = set([1,2,3,4,5])
print(s1)
s1.add(6)
print(s1)


#注意:如果需要添加的元素已经存在的话,则添加失败

s1.add(3)
print(s1)

#print(s1.add(3))


#print(s1.add(7))



#在集合中添加list----->不能


#s1.add([7,8,9])   #TypeError: unhashable type: 'list'



#在集合中添加tuple---->能

s1.add((7,8,9))
print(s1)


#在集合中添加dict---->不能


#s1.add({10:1,20:2})     #TypeError: unhashable type: 'dict'


#print(s1)



#1.2update()  插入【打碎添加,类似于extend的使用】

s2 = set([1,2,3,4,5])
print(s2)

#update不能他添加单个元素


#s2.update(6)  #TypeError: 'int' object is not iterable

s2.update([6,7])
print(s2)

s2.update((8,9))
print(s2)

s2.update({10:1,20:2})
print(s2)

s2.update("good")
print(s2)


#注意区分add()和update()
3.2删除

代码演示:


#2.删除

s3 = set([54,64,6,6])
s3.remove(64)
print(s3)
3.3遍历

代码演示:

3.遍历

#注意:set中是没有索引

for element in s3:
    print(element)

for i,element in enumerate(s3):
    print(i,element)
3.4交集和并集

代码演示:


#4.交集和并集

s4 = set([43,54,5,6])
s5 = set([545,4,65,6,75])


#交集:&【按位与】   and

r1 = s4 & s5
print(r1)
print(type(r1))


#并集:|【按位或】  or

r2 = s4 | s5
print(r2)

三、简单算法

代码演示:

list1 = [43,4,34,23,3,87,87]


#方式一


#定义一个变量,记录最大值,

maxValue = list1[0]

#遍历列表,用maxValue和列表中的其他元素 进行一一比对

for num in list1:
    if num > maxValue:
        #给maxValue重新赋值
        maxValue = num
print(maxValue)


#方式二

maxValue = list1[0]
maxIndex = 0
for i in range(1,len(list1)):
    if list1[i] > maxValue:
        maxValue = list1[i]
        maxIndex = i
print(maxValue,maxIndex)

1.排序

需求:求列表中的最大值

max()

1.1冒泡排序

排序思路:比较两个相邻下标所对应的元素,如果符合条件则交换位置

举例:列表中的元素从左到右存储,经过第一次的冒泡排序之后,【以升序为例】,最大值出现在最右边

规律:见图

代码演示:

list1 = [43,545,4,124,34,323,54]

#冒泡排序


#外层循环:控制比较的轮数

for out in range(0,len(list1) - 1):
    #内层循环:控制每一轮中比较的次数,兼顾参与比较的下标
    for inner in range(0,len(list1) - 1 - out):
        #以升序为例,如果符合条件,则两个相邻的元素交换位置
        if list1[inner] > list1[inner + 1]:
            list1[inner],list1[inner + 1] = list1[inner + 1],list1[inner]

print(list1)
1.2选择排序

排序思路:固定一个下标,然后使用这个下标对应的元素和列表中其他的元素进行依次比对,如果符合条件则交换位置

举例:列表中的元素从左到右存储,经过第一次的选择排序之后,【以升序为例】,最小值出现在最左边

规律:见图

代码演示:

list1 = [43,545,4,124,34,323,54]


#选择排序


#外层循环:控制比较的轮数

for out in range(0,len(list1) - 1):
    #内层循环:控制每一轮中比较的次数,兼顾参与比较的下标
    for inner in range(out + 1,len(list1)):
        #以升序为例,符合条件则交换位置
        if list1[out]  > list1[inner]:
            list1[out],list1[inner] = list1[inner],list1[out]

print(list1)

2.查找

2.1顺序查找

查找思路:遍历指定列表,依次将要查找的数据和列表中的元素进行依次比对,如果相等,则输出索引

代码演示:


#顺序查找

list1 = [43,545,4,124,34,323,54]

keyword = 124


#遍历列表

for i in range(len(list1)):
    #和列表中的元素进行比对
    if keyword == list1[i]:
        print(i)



#求一个列表中的第二大元素的下标


#思路:1.拷贝列表   2.对原列表排序,得到第二大值   3.在副本列表中进行顺序查找
2.2二分法查找

查找思路:

​ a.前提条件:必须是排好序的列表【局限性】

​ b.特点:通过折半来缩小查找范围,提高查找效率【举例:假设有一个列表,升序的,如果keyword大于中间下标对应的元素,则直接在后半部门查找】

代码演示:


#二分法查找



#前提:列表必须是有序的【以升序为例】

list1 = [23,43,45,67,88,90,100]

#list1.reverse()


#print(list1)   #[100, 90, 88, 67, 45, 43, 23]



#待查找的数据

key = 90


#定义变量,用于记录下标


#下标的最小值

left = 0

#下标的最大值

right = len(list1) - 1


#当查找的过程中,left和right是根据不同的条件进行慢慢的靠拢,当left == right的时候,说明整个列表被查找了一遍


#如果没有获取到key,则说明key在列表中是不存在的

while left <= right:
    #计算中间的下标【循环没执行一次,middle都需要被重新计算一次】
    middle = (left + right) // 2

    #将待查找的数据和中间下标对应的元素进行比较
    if key > list1[middle]:
        #更改区间
        left = middle + 1
    elif key < list1[middle]:
        #更改区间
        right = middle - 1
    else:
        print("元素的下标为:",middle)
        #会出现这种情况,当left<right的时候,已经查找到了元素,此时则需要强制停止循环
        break

四、String字符串

1.概念

字符串就是由若干个字符组成的有限序列

字符:字母,数字,特殊符号,中文

表示形式:采用的单引号或者双引号

注意:字符串属于不可变实体

2.创建字符串

代码演示:

str1 = "hello"
str2 = 'hello'
str3 = 'h'   #Python不支持单字符类型,单字符在Python中也是一个字符串

3.字符串运算

代码演示:


#字符串的运算


#1.字符串连接【拼接】 :+


#注意:+只能用于字符串和字符串之间的拼接

s1 = "welcome "
s2 = "to china"
print(s1 + s2)
print(s1)
print(s2)


#2.重复输出字符串  :*

s3 = "good"
print(s3 * 3)
print(s3,s3,s3)

#注意:不管是+还是*,运算结束之后都是生成了一个新的字符串



#3.获取字符串中的某个字符


#和list以及tuple类似,通过索引的方式访问字符串中的字符


#访问方式:字符串名[索引]

s4 = "ahjfahdgjag"

#获取值

print(s4[2])

#获取一个字符串 的长度

print(len(s4))

#遍历字符串:类似于list和tuple的遍历

for c in s4:
    print(c)
for i in range(len(s4)):
    print(s4[i])
for i,c in enumerate(s4):
    print(i,c)


#字符串的本质:在底层维护了一个由不同的字符组成的元组  ('a','h','j'....)


#s4[2] = 'o' #TypeError: 'str' object does not support item assignment



#4.截取字符串【切片】

str1 = "hello world"

#截取指定范围的字符串【子字符串】   包头不包尾的操作

print(str1[6:11])

#从开头截取到指定位置

print(str1[:11])

#从指定位置截取到末尾

print(str1[6:])

str2 = "abc123456"
print(str2[2:5])  #c12
print(str2[2:])  #c123456
print(str2[2::2])    #[start:end:step]    c246
print(str2[::-1])   #step为正数,则从左向右获取,如果未负数,则从右向左获取       654321cba
print(str2[-3:-1])  #45


#5.判断一个字符串中是否包含指定字符:成员运算符

str3 = "you are a good man"
print("good" in str3)
print("good" not in str3)

4.格式化字符串

通过%来改变后面字母的含义,%被称为占位符

​ %s:字符串【对象】

​ %d:整型

​ %f:浮点型,可以指定小数点后的位数【精度】

代码演示:

print("hello")

num = 10
str1 = "hello"
print(num,str1)
print("num = ",num,"str1 = ",str1)

#格式化

print("%d + %s" %(num,str1))

f = 12.34545
print("num = %d,str1 = %s,f = %f"%(num,str1,f))
print("num = %d,str1 = %s,f = %.2f"%(num,str1,f))


#注意:%.nf,如果n省略,则表示取整,如果n>=1,则表示保留小数点后n位,会进行四舍五入的操作

5.转义字符

通过\改变后面字母的含义

\t:相当于按下tab键

\n:换行符

代码演示:


#打印反斜杠\

str1 = "\\"
print(str1)


#打印单引号

str2 = "'"
print(str2)
str2 = '\''



#打印"hello"

print("\"hello\"")

str3 = "hi\thello"
print(str3)

str4 = "hi\nhello"
print(str4)


#如果字符串内部有很多的换行,用\n写在一行里面不好阅读

str5 = "today\nis\na\ngood\nday"
print(str5)


#简化

str6 = """today
is
a
good
day
"""
print(str6)


#C:\Users\Administrator\Desktop\XA-Python1804\Day6\视频

str7 = "C:\\Users\\Administrator\\Desktop\\XA-Python1804\\Day6\\视频"
print(str7)


#为了简化,Python允许使用r"xxxxx',表示字符串内部的字符默认不需要手动转义

str8 = r"C:\Users\Administrator\Desktop\XA-Python1804\Day6\视频"
print(str8)

6.字符串功能

代码演示:


#1.字符串和整数之间的转换


#int() str()


#eval(str):将str转换为有效的表达式,参与运算,并返回运算结果

num1 = eval("123")
print(num1)
print(type(num1))
print(int("123"))

print(eval("+123"))
print(int("+123"))
print(eval("-123"))
print(int("-123"))

print(eval("12+3"))

#print(int("12+3"))   #ValueError: invalid literal for int() with base 10: '12+3'

print(eval("12-3"))

#print(int("12-3"))  #ValueError: invalid literal for int() with base 10: '12-3'



#总结;eval():转换为数学运算     int():转换为整数




#2.统计子字符串在原字符串中出现的次数:count


#count(str[,start,end])

str1 = "good good good"
c = str1.count("good")
print(c)


#3.大小写字母转换


#lower():将字符串中的大写字母转换为小写字母

str2 = "Tomorrow is Better"
newStr1 = str2.lower()
print(newStr1)
print(str2)


#upper():将小写字母转换为大写

print(str2.upper())


#swapcase():将大写转换为小写,将小写转换为大写

print(str2.swapcase())


#capitalize():  首个单词的首字母大写,其他全部小写

print(str2.capitalize())


#title():每个单词的首字母大写

print(str2.title())

猜你喜欢

转载自blog.csdn.net/Leesoar521yt/article/details/81384512