python基础

本文介绍了Python中的数据容器(list和set)使用、序列切片、文件操作(包括读取单词计数和写入追加的区别),以及如何利用random和os模块进行相关功能实现。
摘要由CSDN通过智能技术生成

数据容器

list

取出列表mylist的最后一个元素

num = mylist[-1]

序列

序列支持切片,即:列表、元组、字符串,均支持进行切片操作
切片:从一个序列中,取出一个子序列
语法:序列[起始下标:结束下标:步长]
表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列:
结束下标 (不含) 表示何处结束,可以留空,留空视作截取到结尾
步长表示,依次取元素的间隔
步长1表示,一个个取元素
步长2表示,每次跳过1个元素取
步长N表示,每次跳过N-1个元素取
步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记,一般用负数,见下例)

有字符串:“万过薪月,员序程马黑来,nohtyP学”
请使用学过的任何方式,得到"黑马程序员"

my_str = "万过薪月,员序程马黑来,nohtyP学"
print(my_str.split(',')[1][-2::-1])

set

# 定义一个空集合
my_set = set()
# 定义一个空字典
my_dict = {} # 一定注意,这个定义出来时字典而非集合
my_dict = dict()
# 定义只有一个元素的元组
my_tuple = (1, )

案例

1.幸运数字6:输入任意数字,如数字8,生成nums列表,元素值为1~8,从中选取幸运数字(能够被6整除)移动到新列表lucky,打印nums与lucky。

# Task 1: 幸运数字6
# 输入任意数字
num = int(input("请输入一个数字:"))

# 生成nums列表
nums = list(range(1, num + 1))

# 从nums列表中选取幸运数字(能被6整除)
lucky = [x for x in nums if x % 6 == 0]

# 打印nums与lucky
print("nums列表:", nums)
print("幸运数字列表:", lucky)

语法:range(start, stop[, step])

  • Python3 range()函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。
  • start: 计数从 start 开始。默认是从0 开始。例如 range(5) 等价于 range(0, 5)
  • stop: 计数到 stop 结束,但不包括stop。例如:range(0, 5) 是 [0, 1, 2, 3, 4] 没有 5
  • step:步长,默认为 1。例如:range(0,5) 等价于 range(0, 5, 1)

2.列表嵌套:有3个教室[[], [], []],8名讲师[‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’],将8名讲师随机分配到3个教室中

# Task 2: 列表嵌套
import random

# 3个教室
classrooms = [[], [], []]

# 8名讲师
teachers = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']

# 将8名讲师随机打乱
random.shuffle(teachers)
for teacher in teachers:
    classroom_index = random.randint(0, 2)  # 随机选1个教室分配1个随机老师
    classrooms[classroom_index].append(teacher)

# 打印分配结果
for i, classroom in enumerate(classrooms):
    print(f"教室 {i+1}:", classroom)

shuffle() 方法将序列的所有元素随机排序。
以下是 shuffle() 方法的语法:

import random

random.shuffle (lst )

注意:shuffle()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。

random.randint()的函数原型为:random.randint(a,b)
用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b(注意要取右端点)

文件操作

文件读取

操作功能
文件对象.read(num)读取指定长度字节
不指定num读取文件全部
文件对象.readline()读取一行
for line in 文件对象for循环文件行,一次循环得到一行数据
文件对象.readlines()读取全部行,得到列表

前3个方法的返回值均是str类型,第4个的返回值是str类型的list

单词计数

通过Windows的文本编辑器软件,将如下内容,复制并保存到:word.txt,文件可以存储在任意位置
itheima itcast python
itheima python itcast
beijing shanghai itheima
shenzhen guangzhou itheima
wuhan hangzhou itheima
zhengzhou bigdata itheima
通过文件读取操作,读取此文件,统计itheima单词出现的次数

# 解法1
with open('word.txt', 'r', encoding='utf-8') as f:
    my_list = []
    for line in f:
    	# 去除开头和结尾的空格以及换行符再分割
    	# 否则会导致每行末尾的单词分割后包含换行符
    	# 进而导致list的元素统计出错
    	# 解法2却不需要去除
    	# 因为它是用的str的字串统计
        my_list.extend(line.strip().split(' ')) 
    word_count = my_list.count('itheima')
    print(word_count)
# 解法2
    word_count = 0
    with open('word.txt', 'r') as f:
        for line in f:
            print(line)
            word_count += line.count('itheima')

    print(word_count)

文件写入与追加

差异点

写入追加
使用open函数的”w”模式进行写入使用open函数的”a”模式进行写入
文件存在,会清空原有内容文件存在,会在原有内容后面继续写入

共同点

  • 写入的方法都有:
    • wirte(),写入内容
    • flush(),刷新内容到硬盘中
  • 文件不存在,都会创建新文件

补充

在使用f.write()方法写入时,可以使用”\n”来写出换行符
用反斜杠\换行拼接两行时,一定不要添加不属于文本信息本身的内容,比如制表符(缩进)、空格等

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值