python_笔记_day7_列表_格式字符串_常用对象方法

day7.png

1.格式字符串:


在字符串中通过格式占位符来表示字符串中的变化部分

1.1语法:

包含格式占位符的字符%(给格式占位赋值的数据列表)

1.2说明:

格式占位符:%s - 字符串
          %d - 整数
          %.nf - 浮点数,n可以约束小数点后面的小数位数(正整数)
          %c -  字符,可以将整数转换为字符

# name = input('姓名:')
# age = int(input("age:"))
# print('%s今年%d岁' % (name, age))

2.常用对象方法


2.1 字符串1.count(字符串2)

  • 字符串1.count(字符串2)
    统计字符串2 在字符串1中出现的次数
str1 = 'and you? how are you!'
print(str1.count('a'))
# 练习:打印字符串中出现次数最多的字符和次数
# 'how are you?oh' 打印: o 3次
str1 = 'how are you?oh'
max_conut = 0  #保存当前最大次数
max_char = ''    #保存当前最大次数对应的字符
for char in str1:
     if str1.count(char) > max_conut :# 获取字符出现的次数,如果次数大于当前最大次数,更新最大次数和字符
         max_conut = str1.count(char)
         max_char = char
print('%s出现%d次'%(max_char , max_conut))

2.2字符串1.find(字符串2)

  • 字符串1.find(字符串2)
    在字符串1中查找字符串2 第一次出现的位置,如果找不到返回-1,找到了返回第一个字符的下标
  • 字符串1.find(字符串2,开始下标,结束下标)
    在字符串1中的开始下标到结束下标查找字符串2 第一次出现的位置
print(str1.find('you'))
print(str1.find('you', -8, -1))
# 练习 :在字符串中'and you? how are you! you' ,找到所有'you'出现的下标.打印:4,17,22
str1 = 'and you? how are you! you'
count = str1.find('you')
while True:
    print(count, ',', end=' ')
    count = str1.find('you', count + 1,)
    if count == -1:
        break
 print()

2.2.1 字符串1.index

  • index 功能和find一样,只是如果字符串2不存在的时候回报错
print(str1.index('you2'))

2.3字符串1.isdigit

  • 判断字符串1中是否只有数字字符
print('83'.isdigit())

2.4 字符串1.isnumeric()

  • 判断字符串1是否是数字字符串(可以检查中文数字)
print('壹仟'.isnumeric())

2.5字符串1.join(序列)

  • 将序列中的元素用字符串1链接在一起产生一个新的字符串
print('*'.join('abc'))
print('+'.join(['me', 'you', 'he']))
  • 练习: 自己实现join的功能,给字符串1,和字符串2,用字符串1将字符串2中的所有的字符串连接起来
  • 例如 : str1 = 'aaa', str2 = '123' .输出:'1aaa2aaa3'
 tr1, str2 = 'aaa', '123'
nuw_str = ''
for index in range(len(str2)):
     if index == len(str2) - 1:
        nuw_str += str2[index]
     else:
         nuw_str += str2[index] + str1
print(nuw_str)

str2 = 'ag23bsh2390s'
str1 = '+'
str3 = ''
for char in str2:
    if '0' <=  char <= '9':
        str3 += char + str1
print(str3[:-len(str1)])

2.6 max(序列),min(序列) - 求序列中元素的最大值和最小值

print(max('ahfaehfkaheaz'))
print(min('ahahfka'))
print(min([120, 2, 9, 99, -10]))
print('afaweffafe'.replace('a','A',3))

2.7 字符串1.split(字符串2) - 在字符串1中把字符串2作为切点,将字符串1切割

 print('afaweffafewarawerr2rgehjutre'.split('w'))

3. 列表


3.1 什么时候用列表

需要用一个变量去同时保存多个数据


3.2什么是列表(list)

列表是python内置的容器型数据类型(序列),
可变(说明支持增删改)并且有序(支持下标操作)
用[]将多个元素括起来,多个元素之间用','隔开:[元素1,元素2,元素3...]


3.3 列表中的元素:

python内置的数据类型对应的数据,或者是程序员自定义类型的数据都可以:
不同元素的类型可以不一样
赋值运算表达式不能作为列表元素,其他的都可以

list1 = [120, 12.9, True, 'abc', [1, 23],  {'a':10}, lambda x: x*10]
print(list1)
num1 = 10
list2 = [num1, 100 + 200, 20 > num1]

练习:

将班级学生的成绩保存到score中,求班级的平均成绩,和不及格人数

scores = [90, 80,70, 100, 76, 57, 54]
num1 = 0  #不及格人数
num2 = 0  #总成绩
for index in range(len(scores)):
    num2 += scores[index]
    if scores[index] < 60:
        num1 += 1
print('平均成绩是:%.2f 不及格人数:%d' % (num2 / len(scores), num1))

3.4 查 - 获取列表元素

3.4.1 获取单个元素: 列表[下标]

names = ['海蜇王', '火影', '死神', '犬夜叉', '妖精的尾巴', '熊出没', '一人之下']
print(names[-2])

3.4.2 获取部分元素-切片(和字符串一样):

列表[开始下标:结束下标:步长]
切片的结果是列表

print(names[1:4]) #['火影', '死神', '犬夜叉']
print(names[::-1]) #['一人之下', '熊出没', '妖精的尾巴', '犬夜叉', '死神', '火影', '海蜇王']
print(name[:]) #浅拷贝

3.4.3 遍历

 a.直接遍历 
 for 变量 in 列表:
    循环体
 
 b.通过下标遍历
 for 变量 in range(len(列表))
    循环体   
for item in names:
    print(item)

for index in range(len(names)):
    print(index, names[index])

3.4.4 补充: 求和函数sum

sum(序列) - 求序列中所有元素的和:序列要求元素类型一致,并且元素支持求和运算

print(sum(scores), sum(range(101)))

3.5 增 - 添加元素

3.5.1 列表.append(元素)

在指定的列表的最后添加指定元素

persons = ['路飞', '宝儿姐', '张楚兰']
persons.append('容嬷嬷')
persons.append('赵云')
print(persons)

3.5.2列表.insert(下标,元素)

在指定列表的指定下标前插入元素

numbers = [1, 20, 34, 50]
numbers.insert(2, 22)
print(numbers)

** 练习:**

输入一个数字将他添加到一个有序列表中,要求添加进去后不改变从大到小或者从小到大排列顺序

numbers1 = [1, 20, 100, 200]
num = int(input('请输入数字:'))
# 思路:找到第一个比输入的数字大的数字对应的下标,然后插入到这个下标前.如果原来的数字都比输入的小,就会添加到最后
for index in range(len(numbers1)):
     if numbers1[index] >= num:
        numbers1.insert(index, num)
        break
else:
     numbers1.append(num)
print(numbers1)

3.6 删 - 删除元素

3.6.1 del 列表[下标]

将指定列表中指定下标对应的元素删除

names = ['海蜇王', '火影', '死神', '犬夜叉', '妖精的尾巴', '熊出没', '一人之下']
del names[2]  # 凡是单个的下标就不能越界
print(names)

3.6.2 列表.remove(元素)

将指定列表中第一指定元素删除
注意如果元素不存在,会报错

names.remove('海蜇王')
print(names)

3.6.3 列表.pop()

移除列表中最后一个,返回被移除的元素
列表.pop(下标) - 移除列表中指定下标对应的元素

del_name = names.pop()
print(del_name)
names.pop(0)
print(names)

需求:删除所有的指定元素,例如'海蜇王'
names = ['海蜇王', '火影', '海蜇王', '死神', '犬夜叉', '妖精的尾巴', '熊出没', '一人之下', '海蜇王']
要求: 用remove , 用del/pop

print('=================================================')
names = ['海蜇王', '火腿', '海蜇王', '死神辣条', '狗肉叉烧', '猪尾巴', '熊掌', '蚂蚁上树', '海蜇王']
while True:
    if '海蜇王' in names :
        names.remove( '海蜇王')
    else:
        break
print(names)

name = '海蜇王'
names = ['海蜇王', '火腿', '海蜇王', '死神辣条', '狗肉叉烧', '猪尾巴', '熊掌', '蚂蚁上树', '海蜇王']
while True:
    if '海蜇王' not in names :
        break
    for index in range(len(names)):
        if names[index] in name:
            del names[index]
            break
print(names)

name = '海蜇王'
names = ['海蜇王', '海蜇王', '火腿', '海蜇王', '死神辣条', '狗肉叉烧', '猪尾巴', '熊掌', '蚂蚁上树', '海蜇王']
while True:
    if '海蜇王' not in names :
        break
    for index in range(len(names)):
        if names[index] in name:
            names.pop(index)
            break
print(names)

print('=================================================')

3.6.4 清空: 列表.clear()

删除列表中所有的元素

names = ['海蜇王', '海蜇王', '火腿', '海蜇王', '死神辣条', '狗肉叉烧', '猪尾巴', '熊掌', '蚂蚁上树', '海蜇王']
names.clear()
print(names)

3.7 改 - 修改列表中的元素

列表[下标] = 新值 - 将列表中指定下标对应的元素改成新值

nums = [1, 2, 3]
nums[0] = 100
print(nums)

3.8 in / not in

元素列表

print([1, 2] in [1, 2, 3, 4])  # False
print([1, 2] in [1, 2, 3, 4, [1, 2]])  # True
print(1 in [[1], 2, 3, 4])  # False
print(1 in [1, 2, 3, 4])  # True

你可能感兴趣的:(python_笔记_day7_列表_格式字符串_常用对象方法)