python基础学习05


文章目录

  • python基础学习05
  • 1. 列表的嵌套使用
  • 1.1 保存5个学生3门课的成绩
  • 1.2 给列表元素去重
  • 2. 元组
  • 2.1 元组的定义
  • 2.2 元组的运算
  • 2.3 元组的解unpack/pack
  • 3. 字符串
  • 3.1 初步感知字符串
  • 3.2 字符串的常用方法
  • 3.3 字符串的编程练习
  • 总结
  • 语录


1. 列表的嵌套使用

1.1 保存5个学生3门课的成绩
  • 如下:

语文

数学

英语

张飞

67

66

45

关羽

90

89

33

诸葛

45

78

67

赵云

34

67

23

王亮

23

56

78

  • 代码实现
import random

names = ['关羽', '诸葛', '王亮', '赵云', '张飞']
courses = ['语文', '数学', '英语']
scores = [[random.randint(50, 100) for _ in range(3)] for _ in range(5)]

for i, name in enumerate(names):
    for j, course in enumerate(courses):
        print(f'{name}的{course}成绩:\t{scores[i][j]}')

    print(f'{name}的平均成绩{sum(scores[i]) / len(courses):.1f}')

for j, course in enumerate(courses):
    temp = [scores[i][j] for i in range(len(names))]
    # print(temp)
    print(f'{course}的最高分:{max(temp)}')
    print(f'{course}的最低分:{min(temp)}')
1.2 给列表元素去重
  • 方法一,先进行排序,再相邻两个比较
nums = [1, 2,2,2 ,3, 5, 3, 2, 3,5,23,23,2]
nums.sort()
temp=[]
for i in range(len(nums)-1):
    if nums[i]!=nums[i+1] :
        temp.append(nums[i])

temp.append(nums[-1])
nums=temp
print(nums)
  • 方法二,放在集合里面直接去重,但无法保存元素是否有序,但可以利用sort(key=L.index)方法不改变元素的顺序
nums = [1, 2,2,2 ,3, 5, 3, 2, 3,5,23,23,2]

temp=[]
for num in nums:
    if num not in temp:
        temp.append(num)
print(temp)
  • 方法三,建立一个临时列表,判断元素是否再临时列表中,如果不在就放入临时列表中最后将临时列表付给需要去重列表
nums = [1, 2,2,2 ,3, 5, 3, 2, 3,5,23,23,2]

nums2=list(set(nums))
nums2.sort(key=nums.index)
print(nums2)

2. 元组

2.1 元组的定义
  • 元组是一个不可变的数据类型
# 定义一个一元组
tuples = ('hell',)
fruits1 = ('apple', 'banana', 'pitaya')
print(type(fruits1))  # <class 'tuple'>
2.2 元组的运算
# 重复运算
print(fruits1 * 3)

# 合并运算
fruits2 = ('litchi', 'grape')
print(fruits2 + fruits1)

# 切片和索引
print(fruits1[::-1])
print(fruits1[:3])
print(fruits1[1:2])  # ('banana',)


# 成员运算
print('apple' in fruits1)

# 不支持修改
# 'tuple' object doesn't support item deletion
# del  fruits1[0]
2.3 元组的解unpack/pack
# ValueError: too many values to unpack (expected 3)
# a,b,c=1,23,42,534

# TypeError: cannot unpack non-iterable int object
# a,b=1

a, *b, c = 1, 3, 5, 4, 5   # 对于a,c以unpake,*b以pake,并以列表返回
print(a)
print(b, type(b))  # [3, 5, 4] <class 'list'>
print(c)

3. 字符串

3.1 初步感知字符串
a='hello,world'
# ''''''可以实现折行,'' 不可以折行
b='''
明天你是否想起
曾经最爱哭的你!
'''
print(a)
print(b)
# '\'转义字符
a='\'add\''
b='"ddff"'
c="'ddff'"
d="\"sidhi\""
print(b)
print(a)
print(c)
print(d)
3.2 字符串的常用方法
  • 字符串和元组一样时不可改变的,只能读写不能改变元素
s1 = 'hello,world!'
# 遍历字符串中每一个元素
for i in s1:
    print(i,end='')
print()


# s1[0] = 'H'  # 'str' object does not support item assignment

s2='tian,yu,ping!'
# 同上面一样
for i in range(len(s2)):
    print(s2[i],end='')

print()
# 重复运算
a = 'I'*50
print(a)
# 成员运算
print('i' in a)
print('i' not in a)

# 字符串的拼接
s1='holle'
s2=',world!'
s3=s1+s2
print(s3) # hello,world!
  • 判断性质、查找
s = 'hello,world'
# 转换
print(s.lower())
print(s.upper())

# 判断性质
print(s.isdigit())
print(s.isalnum())
print(s.isascii())
print(s.islower())
print(s.startswith('h'))
print(s.endswith('d'))

# 查找
s = 'tianyuping'
print(s.find('yu'))
print(s.rfind('u'))
3.3 字符串的编程练习
  • 实习字符串滚动打印,该程序不能直接运行需要在终端上运行
import time 
import os
context='   好好学习,天天向上!   '
while True:
    os.system('cls') #windowns系统下清屏指令
    print(context)
    time.sleep(1) # 实现停顿
    context = context[1:]+context[0] # 前后拼接

总结

通过对字符串的学习过后,这方便后面我们对文本数据的处理带来一点的便利。在以后的数据中我们大多拿到的数据都是文本类型,需要通过字符串的方法来处理数据。

语录

学习的过程是可能需要付出很多心血, 但坚持是成为一个优秀数据分析师必然要经历的过程。
数据分析的学习之路, 并不是学的越多越好, 而是要将学习的方向明确好, 再使正确的力, 这样才可以在正确的方向 做正确的事。