ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Python for与while循环的介绍和对应练习题的巩固

2026/9/25 1:19:13 拓冰建站 浏览量
Python for与while循环的介绍和对应练习题的巩固

for循环

  • 重复执行同一段代码就是循环

循环列表

  • for val in list_name:

  • list_num = [1,2,3,4,5,6,7,8,9]
    for i in list_num:print(i)
    

    image-20240102150306817

  • image-20240102150241816

代码执行顺序

从上往下依次执行

遍历

通过某种顺序把某种集合所有元素都访问一遍

list_food={"火锅","烧烤","张晗","牛魔"}
for food in list_food:print(f"我喜欢吃{food}")

image-20240102151252913

range整数列表

一个参数

  • range(n) 表示[0,n)区间的数字,不包含n

  • #------------range()-------------------
    for i in range(5):print(i)
    
  • image-20240102152617677

两个参数

  • range(a,b) 表示[a,b)区间的数字,不包含n

  • for i in range(1,5):print(i)
    

    image-20240102152803866

三个参数

  • range(a,b,c) 表示[a,b)区间的数字,且间隔c,不包含n,不大于b

  • for i in range(1,10,2): #--->1,3,5,7,9print(i)
    

    image-20240102152914504

while循环

  • while循环是一种控制流循环语句,通常用于不知道具体循环次数的情况

  • while [执行条件]:

  • #---------while--------------------
    num = 0
    while num<10:print(num)num+=1
    
  • image-20240102160507230

break与continue

  • break跳出或者说是终止当前整个循环,循环终止
  • continue跳过本次循环,进行下次循环,实际循环并没有被终止

循环与列表的练习

1470. 重新排列数组

给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,...,xn,y1,y2,...,yn] 的格式排列。

请你将数组按 [x1,y1,x2,y2,...,xn,yn] 格式重新排列,返回重排后的数组。

示例 1:

输入:nums = [2,5,1,3,4,7], n = 3
输出:[2,3,5,4,1,7] 
解释:由于 x1=2, x2=5, x3=1, y1=3, y2=4, y3=7 ,所以答案为 [2,3,5,4,1,7]

示例 2:

输入:nums = [1,2,3,4,4,3,2,1], n = 4
输出:[1,4,2,3,3,2,4,1]

示例 3:

输入:nums = [1,1,2,2], n = 2
输出:[1,2,1,2]

题解

class Solution:def shuffle(self, nums: List[int], n: int) -> List[int]:ret=[]for i in range(n):ret.append(nums[i])# 前nret.append(nums[i+n])# 后nreturn ret

1920. 基于排列构建数组

给你一个 从 0 开始的排列 nums下标也从 0 开始)。请你构建一个 同样长度 的数组 ans ,其中,对于每个 i0 <= i < nums.length),都满足 ans[i] = nums[nums[i]] 。返回构建好的数组 ans

从 0 开始的排列 nums 是一个由 0nums.length - 10nums.length - 1 也包含在内)的不同整数组成的数组。

示例 1:

输入:nums = [0,2,1,5,3,4]
输出:[0,1,2,4,5,3]
解释:数组 ans 构建如下:
ans = [nums[nums[0]], nums[nums[1]], nums[nums[2]], nums[nums[3]], nums[nums[4]], nums[nums[5]]]= [nums[0], nums[2], nums[1], nums[5], nums[3], nums[4]]= [0,1,2,4,5,3]

示例 2:

输入:nums = [5,0,1,2,3,4]
输出:[4,5,0,1,2,3]
解释:数组 ans 构建如下:
ans = [nums[nums[0]], nums[nums[1]], nums[nums[2]], nums[nums[3]], nums[nums[4]], nums[nums[5]]]= [nums[5], nums[0], nums[1], nums[2], nums[3], nums[4]]= [4,5,0,1,2,3]

题解

class Solution:def buildArray(self, nums: List[int]) -> List[int]:ret = []n = len(nums)for i in range(n):ret.append(nums[nums[i]])return ret

2824. 统计和小于目标的下标对数目

给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 target ,请你返回满足 0 <= i < j < nnums[i] + nums[j] < target 的下标对 (i, j) 的数目。

示例 1:

输入:nums = [-1,1,2,3,1], target = 2
输出:3
解释:总共有 3 个下标对满足题目描述:
- (0, 1)0 < 1 且 nums[0] + nums[1] = 0 < target
- (0, 2)0 < 2 且 nums[0] + nums[2] = 1 < target 
- (0, 4)0 < 4 且 nums[0] + nums[4] = 0 < target
注意 (0, 3) 不计入答案因为 nums[0] + nums[3] 不是严格小于 target 。

示例 2:

输入:nums = [-6,2,5,-2,-7,-1,3], target = -2
输出:10
解释:总共有 10 个下标对满足题目描述:
- (0, 1)0 < 1 且 nums[0] + nums[1] = -4 < target
- (0, 3)0 < 3 且 nums[0] + nums[3] = -8 < target
- (0, 4)0 < 4 且 nums[0] + nums[4] = -13 < target
- (0, 5)0 < 5 且 nums[0] + nums[5] = -7 < target
- (0, 6)0 < 6 且 nums[0] + nums[6] = -3 < target
- (1, 4)1 < 4 且 nums[1] + nums[4] = -5 < target
- (3, 4)3 < 4 且 nums[3] + nums[4] = -9 < target
- (3, 5)3 < 5 且 nums[3] + nums[5] = -3 < target
- (4, 5)4 < 5 且 nums[4] + nums[5] = -8 < target
- (4, 6)4 < 6 且 nums[4] + nums[6] = -4 < target

题解

class Solution:def countPairs(self, nums: List[int], target: int) -> int:sum = 0n = len(nums)for i in range(n):for x in range(i+1,n):if(nums[i]+nums[x]<target):sum+=1return sum