AcWing 0x01. 语法基础课【Python3】版题解-内置数据结构/字符串

AcWing语法基础课【Python3】版题解-内置数据结构/字符串

【AcWing】

【AcWing 语法基础课】

【AcWing 0x00. 语法基础课【Python3】版题解-顺序/判断/循环语句】

【AcWing 0x01. 语法基础课【Python3】版题解-内置数据结构/字符串】

【AcWing 0x02. 语法基础课【Python3】版题解-函数/类和对象/常用库】

列表、元组、字典、集合、数组

例题

【AcWing 737. 数组替换】

X = [int(input()) for i in range(10)]
for i in range(10):
    print(f"X[{
     i}] = {
     X[i] if X[i] > 0 else 1}")

解析:先生成列表X,再用三目运算符把非正整数全部替换为1。

X = []
for i in range(10):
    y = int(input())
    X.append(y if y > 0 else 1)
    print(f"X[{
     i}] = {
     X[i]}")

解析:在线处理,上下两个代码仅仅是有无使用list的区别。

for i in range(10):
    y = int(input())
    y = y if y > 0 else 1
    print(f"X[{
     i}] = {
     y}")

使用array标准库:

import array
X = array.array('b')
for i in range(10):
    y = int(input())
    X.append(y if y > 0 else 1)
    print(f"X[{
     i}] = {
     X[i]}")

解析:array仅在创建时和列表不同,需要指定数据类型。

使用匿名表达式:

X = [int(input()) for i in range(10)]
Y = list(map(lambda y: y if y > 0 else 1, X))

for i in range(10):
    print(f"X[{
     i}] = {
     Y[i]}")

解析:创建两个列表,第一个列表接受输入值,第二个列表通过一个 map() 把输入值映射为题示输出值,其中映射规则“非正整数全部替换为1”使用匿名表达式实现。

【AcWing 738. 数组填充】

V = int(input())
N = [V * 2 ** i for i in range(10)]
for i in range(10):
    print(f"N[{
     i}] = {
     N[i]}")

解析:列表推导式即可,在线处理和上一题一样,略。

【AcWing 739. 数组选择】

A = [float(input()) for i in range(100)]
for i in range(100):
    if A[i] <= 10:
        print(f"A[{
     i}] = {
     A[i]}")

解析:列表推导式处理输入数据即可,在线处理和上一题一样,略。

【AcWing 743. 数组中的行】

L = int(input())
K = input()
matrix = [list(map(float, input().split())) for i in range(12)]
if K == "S":
    print(f"{
     sum(matrix[L]):.1f}")
else:
    print(f"{
     sum(matrix[L]) / len(matrix[L]):.1f}")

解析:通过列表解析生成矩阵,对于 N × N N\times N N×N的矩阵,用for循环生成N行,用list(mapfloat, input().split()))把这一行输入的数据转变成浮点数列表。

【AcWing 745. 数组的右上半部分】

K = input()
matrix = [list(map(float, input().split())) for i in range(12)]
Sum = 0
for i in range(11):
    Sum += sum(matrix[i][i+1:12])
    # 等价于 Sum += sum(matrix[i][i+1:])
if K == "S":
    print(f"{
     Sum:.1f}")
else:
    print(f"{
     Sum / 66:.1f}")

解析:列表切片list[a:b]返回列表下标从a到b的值,注意是左闭右开,只取到b的前一个之值而不包括b。

【AcWing 747. 数组的左上半部分】

K = input()
matrix = [list(map(float, input().split())) for i in range(12)]
Sum = 0
for i in range(11):
    Sum += sum(matrix[i][0:12-i-1])
    # 等价于 Sum += sum(matrix[i][:12-i-1])
if K == "S":
    print(f"{
     Sum:.1f}")
else:
    print(f"{
     Sum / 66:.1f}")

解析:和上一题一样,只是切片区域改变。

【AcWing 749. 数组的上方区域】

K = input()
matrix = [list(map(float, input().split())) for i in range(12)]
Sum = 0
for i in range(5):
    Sum += sum(matrix[i][i+1:12-i-1])
if K == "S":
    print(f"{
     Sum:.1f}")
else:
    print(f"{
     Sum / 30:.1f}")

解析:和上一题一样,只是切片区域改变。

【AcWing 751. 数组的左方区域】

K = input()
matrix = [list(map(float, input().split())) for i in range(12)]
Sum = 0
for i in range(5):
    Sum += sum(matrix[i+1][:i+1])
for i in range(5):
    Sum += sum(matrix[i+6][:5-i])
if K == "S":
    print(f"{
     Sum:.1f}")
else:
    print(f"{
     Sum / 30:.1f}")

解析:和上一题一样,只是切片区域改变。

【AcWing 753. 平方矩阵 I】

def edgePadding(n, m, matrix):
    if 2 * m - 1 == n:
        matrix[m-1][m-1] = m
        return
    elif 2 * m == n:
        matrix[m-1][m-1:m+1] = matrix[m][m-1:m+1] = [m, m]
        return
    else:
        edgePadding(n, m + 1, matrix)
        length = n - 2 * (m - 1)
        matrix[m-1][m-1:m+length-1] = [m for i in range(length)]
        matrix[m+length-2][m-1:m+length-1] 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值