python学习笔记P41-47

P41复习

s = 'abcd123'

# for i in range(10): #0,1,2,3,..,9
#     print(i)

# for i in s:  # a,b,c,d,1,2,3
#     print(i)

sum = 0
for i in 'sag237dabkd73':
    if i.isdigit():
        sum += int(i)
print(sum)

字符串:

  1. 下标:

    0~n-1

    n~-1

    s[-1],s[3]

  2. 切片:

    s[1:-1]

    s[1:-1: -2]

    s[1:-1: -2]error

    s[-1:1: -2] 方向

    s[:]

    s[1:]

    s[:-1] 从头到-1 但不包含-1

  3. 字符串的操作

    len,find,rfind,startswith,endswith,isalpha,isdigit,…

    replace(old,new,count)

    split(‘指定的分隔符’) rsplit(‘指定的分隔符’)

    strip() lstrip() rstrip()

    count

    join()

    format

    lower() upper() title()

  4. 列表:

    定义格式:

    []

    [‘aa’,‘bb’,‘cc’] [1,2,3,4] [[],[],[]]

  5. 下标和切片

P42 列表的添加

append()用于在列表末尾添加新的对象,输入参数为对象;

extend()用于在列表末尾追加另一个序列中的多个值,输入对象为元素队列;

'''
添加 删除 修改 查询
1.添加元素: append 追加 类似排队

'''

list1 = []
list2 = ['面包']

list1.append('火腿肠')
list1.append('酸奶')
list1.append('辣条')
print(list1)

list2.append('薯条')
print(list2)

# list1,list2
# list1 = list1+list2
# print(list1)
# list1 = list2+list1
# print(list1)

'''
+可以应用于:
数字: n=1+3
字符串: s='aa'+'bb'------>aabb
列表: list0=[1,2,3]+['a','b']--->[1,2,3,'a','b']
'''

print('---' * 20)
# extend
list1.extend(list2)
print(list1)

'''
买多件:
商品名称:价格,数量
要用到列表的嵌套
'''

container = []  #存放多件商品的容器
flag = True
while flag:
    # 添加商品
    name=input('商品名称:')
    price = input('商品价格:')
    number=input('商品数量:')
    goods=[name,price,number]
    # 将商品添加container
    container.append(goods)
    # container.extend(goods)
    '''
    这里如果用了extend,container=[name,price,number,name,price,number,...]
    可是我们想要的是 container=[[name,price,number],[name,price,number],[],[]..]
    '''
    answer = input('是否继续添加?(按q或Q退出)')
    if answer.lower() == 'q':  # if answer=='q' or answer=='Q':
        flag = False

print('*-'*20)
# 遍历container
for goods in container: # [[],[],[],...]
    print(goods)
'''
['牛奶', '2', '3']
['面包', '3', '4']
['辣条', '2', '3']

'''
print('-#'*20)
print('商品名称\t价格\t数量')
for goods in container:
    # print(goods[0],goods[1],goods[2])
    s= '{}\t{}\t{}'.format(goods[0],float(goods[1]),int(goods[2]))
    result = s.center(15)
    print(result)

P43 列表的删除

'''
删除 pop remove clear
pop(index):根据下标删除列表中的元素,下标在写的时候注意不要超出范围
pop():从后往前依次删除


remove(element):根据元素名称删除,如果删除的元素列表中不存在则报错,list.remove(x): x not in list
如果列表中存在多个同名元素element,只删除遇到的第一个元素,后面的元素不会被删除(想都删掉,需要循环)
关键字in;元素 in 列表 表示元素是否在列表中? 返回值是bool类型

clear():

'''

list1=['火腿肠','酸奶','辣条','面包','薯条']
# list1.pop(-1)
# print(list1) #['火腿肠', '酸奶', '辣条', '面包']
#
# list1.pop()
# print(list1)

list1.remove('辣条')
print(list1)

# 判断是否存在要删除的元素
if '辣条呀' in list1:
    print('存在')
else:
    print('不存在')

list1=['火腿肠','酸奶','辣条','面包','薯条','酸奶']
# 有两个连续的'酸奶',只会删除一个,因为删除的循环中,会对index有影响,会漏删
# ['火腿肠','辣条','面包','薯条','酸奶']
# 删除多个元素
# for i in list1:
#     if i == '酸奶':
#         list1.remove(i)
# print(list1)

list1=['火腿肠','酸奶','酸奶','辣条','面包','薯条','酸奶']
n = 0
while n<len(list1):
    if list1[n] == '酸奶'
        list1.remove('酸奶')
    n+=1

在这里插入图片描述

  • 几种delete的方式

    list1=['火腿肠','酸奶','酸奶','辣条','面包','薯条','酸奶']
    for i in list1:
        if i == '酸奶':
            list1.remove(i)
    print(list1)
    
    li=[1,1,1,2,3]
    
    elem = 1
    result_li =[]
    for i in li:
        if i != elem:
            result_li.append(i)
    
    li = result_li
    print(li)
    
    list1=['火腿肠','酸奶','酸奶','辣条','面包','薯条','酸奶']
    list2=[]
    
    for i in list1:
        if i !='酸奶':
            list2.append(i)
    print(list2)
    
    li =['酸奶',1,'酸奶','酸奶',1,1,'酸奶','酸奶',1,1,34,5]
    for i in li[::-1]:
        if i =='酸奶':
            li.remove(i)
    print(li)
    
  • insert

'''
修改
[1,2,3,4,5,6]
insert(位置,元素)   # 元素占了位置,其他元素只能向后移动

index(元素):根据元素找该元素的位置下标,返回值是下标位置
修改元素值:
列表[index]=新值
'''
list1 = [1, 2, 3, 4, 5, 6]
# list1.insert(1, 8)  # 插队
# print(list1)

# 直接定位那个位置进行修改
list1[1] = 8
print(list1)

position = list1.index(5) # 找到5的位置
list1[position] = 8
print(list1)

print('--$--'*20)
# clear
list1.clear()
print(list1)

P45 列表查找和del

'''
查找:
1.元素 in 列表     返回bool类型 元素 not in 列表
2.列表.index(元素)  返回元素下标位置,若没有此元素则报错
3.列表.count()    返回整数
'''

list1 = [1,2,45,7,9,10]
print(list1.count(8))   #若元素不存在 则返回0
print(list1.count(2))   #存在则返回个数
#
# del list1[3]
# print(list1)
#
# list1.pop(3)
# print(list1)

# list1.clear()

# del list1
#
# list1.append(100)
# print(list1)
list1 = [1, 34, 5, 78, 9, 5, 2]

list2 = list1

list2.append(88)
print(list1)
print(list2)
'''
[1, 34, 5, 78, 9, 5, 2, 88]
[1, 34, 5, 78, 9, 5, 2, 88]
因为list1把地址赋给了list2,它们指的地址是一样,
所以当list2里加88了,跟list1同一个地址,list1也会加88
所以打印的内容一样
'''

# list1.clear()
# print(list2)

del list2
print(list1)  # [1, 34, 5, 78, 9, 5, 2, 88]

del list2
print(list1)  # [1, 34, 5, 78, 9, 5, 2, 88]
# clear 清空的是房子的家具
# del 指针断掉,变量名也回收了,相当于没有钥匙了

在这里插入图片描述

a = 'hello'

b=a
c=a
del a
print(b)
print(c)

# hello
# hello

在这里插入图片描述

  • del 可以删列表 也可以删字符串

P46 排序 翻转

'''
sort
reverse
'''

# 生成8个1-20之间的随机整数,保存到列表中,遍历打印
import random

numbers = []

for i in range(8):
    ran = random.randint(1,20)
    # print(ran)
    numbers.append(ran)

print(numbers)

# reverse 没有排序,单纯反转
numbers.reverse()
print(numbers)

numbers.sort()  # 默认升序,可以通过reverse参数控制升序还是降序
print(numbers)

# sort里面的reverse决定升降序,True 降序 False 升序
numbers.sort(reverse=True)  # 降序
print(numbers)

numbers.sort(reverse=False) # 升序,默认
print(numbers)
'''

生成8个1-100之间的随机整数,保存到列表
键盘输入一个1-100之间的整数,将整数插入到排序后的列表中
e.g 
[1,9,3,42,4]
[1,3,4,9,42]
5
[1,3,4,5,9,42]

'''

import random

list1=[]
for i in range(8):
    ran = random.randint(1, 100)
    list1.append(ran)
print(list1)

# 方法1
# num = int(input('输入1-100的整数:'))
# list1.insert(1,num)
# # list1.append(num)
# list1.sort()
# print(list1)

# 方法2
# num = int(input('1-100数字:'))
# # 有多少数字,就循环遍历多少次
# for i in range(len(numbers)):
#     if (numbers[i] <= num) and (numbers[i+1]>num):
#         numbers.insert(i+1,num)
#         break
# print(numbers)

# 方法3
num = int(input('1-100:'))

for i in numbers:
    if num <=i:
        numbers.insert(numbers.index(i),num)
        break
    else:
        numbers.append(num)'''

生成8个1-100之间的随机整数,保存到列表
键盘输入一个1-100之间的整数,将整数插入到排序后的列表中
e.g 
[1,9,3,42,4]
[1,3,4,9,42]
5
[1,3,4,5,9,42]

'''

import random

list1=[]
for i in range(8):
    ran = random.randint(1, 100)
    list1.append(ran)
print(list1)

num = int(input('输入1-100的整数:'))
list1.insert(1,num)
list1.sort()
print(list1)

P47 冒泡排序

  • 交换
# 交换
a = 2
b = 3
print(a,b)
# c = a
# a = b
# b = c
# print(a,b)

a,b=b,a
print(a,b)

a,b,c=b,a,b
print(a,b,c)

在这里插入图片描述

  • 冒泡排序(练习)
    在这里插入图片描述
num = [5, 1, 7, 6, 8, 2, 4, 3]

for i in range(0, len(num) - 1):  # 控制轮数
    for j in range(0, len(num) - 1 - i):
        if num[j] > num[j + 1]:  # 两两比较
            a = num[j]  # 交换
            num[j] = num[j + 1]
            num[j + 1] = a

print(num)

P48 元组

元组与列表类似,不同之处在于元组的元素不能修改(增删改),元组使用小括号(),列表使用方括号[]

'''
元组与列表类似,不同之处在于元组的元素不能修改(增删改)
元组使用小括号(),列表使用方括号[]

list 列表
tuple 元组

def:
名 = ()

注意:如果元组中只有一个元素,必须添加逗号 ('aa',) (1,) (2.8,)
下标+切片
方法:
    count()
    index()

关键字:
    in, not in
    for..in
    while

转换
list(tuple)--->元组转成列表
tuple(list)--->列表转元组
'''

t1 = ()
print(type(t1))  # <class 'tuple'>

t2 = ('aa')
print(type(t2))  # <class 'str'>

t2 = ('aa',)  # 加逗号才是元组类型
print(type(t2))  # <class 'tuple'>

t3 = ('a', 'b', 'c')
print(type(t3))  # <class 'tuple'>

# 下标和切片     字符串,列表,元组--->注意下标越界
print(t3[2])
# # 下面两种情况都会报错,因为不存在
# print(t3[9])
# print(t1[0])

print(t3[1:])  # ('b', 'c'),切的是元组,切出来的依然是元组

print(t3[::-1])  # ('c', 'b', 'a')

n = t3.count('a')  # 计数
print(n)

t3 = ('a', 'b', 'c', 'a')
index = t3.index('a')  # 0 根据元素获取下标位置
print(index)
index = t3.index('a', 1)
print(index)  # 3

t3 = ('a', 'b', 'c', 'y', 'e', 'a')
# index = t3.index('a',1,5)   #报错,没找到a,说明index('a',1,5)不包含5
index = t3.index('a', 1, 6)  # 把5改成6就能找到a了

print(index)

# 支持if语句
if 'e' in t3:
    print('zai')
else:
    print('bucunzai')

# 支持for..in循环
for i in t3:
    print(i)

# t3[0]='abc' #Tuples don't support item assignment
'''
# 需求,给元组修改里面的元素,直接修改不可行,
可以把元组转换成列表类型,缺点是占内存
'''

# list(tuple)--->元组转成列表
# tuple(list)--->列表转元组
t3 = list(t3)
print(type(t3))  # <class 'list'>
print(t3)  # ['a', 'b', 'c', 'y', 'e', 'a']
t3.append('x')
print(t3)  # ['a', 'b', 'c', 'y', 'e', 'a', 'x']

t3 = tuple(t3)
print(t3)  # ('a', 'b', 'c', 'y', 'e', 'a', 'x')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值