首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python-VBA函数之旅-range函数

  • 25-03-03 04:23
  • 3504
  • 8824
blog.csdn.net

目录

一、range函数的常见应用场景

二、range函数使用注意事项

三、如何用好range函数?

1、range函数:

1-1、Python:

1-2、VBA:

2、推荐阅读:

个人主页:https://blog.csdn.net/ygb_1024?spm=1010.2135.3001.5421 

一、range函数的常见应用场景

        range函数在Python编程中有广泛的应用场景,因为它为迭代提供了方便的方式,特别是在需要生成一系列连续整数时,常见的应用场景有:

1、循环遍历固定次数的操作:当你需要执行某个操作固定次数时,可以使用range()函数来生成一个数字序列,并在循环中遍历这个序列。

2、索引访问列表/元组/字符串:虽然range()函数本身不直接支持索引,但结合len()函数和列表解析等,可以轻松地对列表/元组/字符串等进行索引操作。

3、生成步进序列:当需要生成一个步长不为1的序列时,可以使用range()函数的第三个参数,这在创建图形、处理数组或矩阵时特别有用。

4、创建数字列表:通过结合list()函数和range()函数,可以轻松创建数字列表。

5、随机选择或打乱顺序:虽然range()函数本身不直接用于随机选择或打乱顺序,但结合其他库(如random)可以很容易地实现这些功能。

6、数学计算:在需要进行数学计算,如求和、求积或计算某个数学公式在不同整数点上的值时,range()函数可以生成所需的整数序列。

7、生成器表达式和列表解析:range()函数常与生成器表达式(generator expressions)和列表解析(list comprehensions)一起使用,以简洁的方式处理数据。

8、图形和动画:在创建图形或动画时,range()函数可以生成坐标点或时间步长。

9、算法和数据结构:在实现各种算法和数据结构时,range()函数可以用于初始化数组、遍历数据结构或模拟算法的执行步骤。

10、科学计算和数据分析:在科学计算和数据分析中,经常需要迭代一组连续的整数或浮点数,虽然numpy等库提供了更高效的数组和矩阵操作,但range()函数在处理简单迭代时仍然很有用。

        总之,range()函数是Python编程中非常实用的一个工具,它简化了对连续数字序列的处理和操作。 

二、range函数使用注意事项

        在使用Python中的range()函数时,需牢记以下事项:

1、不包括结束值:range()函数生成的序列是左闭右开的,即它会包含起始值,但不包含结束值,这意味着range(1, 5)将生成序列[1, 2, 3, 4],而不是[1, 2, 3, 4, 5]。

2、步长可以是负数:虽然range()函数通常用于生成递增序列,但你也可以使用负数作为步长来生成递减序列。例如,range(5, 0, -1)将生成序列[5, 4, 3, 2, 1]。

3、不支持直接索引:range()函数返回的是一个可迭代对象,而不是列表或数组,这意味着你不能像使用列表那样直接通过索引访问range()对象中的元素;如果你需要索引访问,可以将range()对象转换为列表或其他序列类型。

4、内存效率:由于range()对象是可迭代的,它不会一次性生成整个序列并存储在内存中,这使得range()在处理大数据集时非常高效,因为它按需生成值,而不是预先生成所有值,然而,如果你需要将range()对象转换为列表或其他序列类型,则需要注意内存使用情况。

5、Python 2和Python 3的差异:在Python 2中,range()函数返回的是一个列表,而在Python 3中,它返回的是一个范围对象(range object),这种变化使得Python 3在处理大数据集时更加内存高效,如果你在使用Python 2并且希望获得与Python 3相似的内存效率,可以考虑使用xrange()函数(注意:在Python 3中,xrange()已被移除,并被range()取代)。

6、避免不必要的转换:如果你只是需要迭代range()对象中的值,而不需要将它们存储在一个列表中,那么就没有必要将range()对象转换为列表,直接迭代range()对象更加高效。

7、步长不能为0:range()函数的步长参数不能为0,因为这会导致无限循环,如果你尝试使用0作为步长,Python将抛出一个ValueError异常。

8、避免在循环中修改索引:虽然Python允许你在循环中修改循环变量(如i),但在使用range()函数的循环中,这通常是没有意义的,因为range()生成的序列是不可变的,修改循环变量不会影响下一次迭代中的值。

9、注意循环的边界条件:在使用range()函数时,确保你理解了循环的边界条件,如果你不小心设置了错误的起始值、终止值或步长,可能会导致循环不执行、执行次数太少或太多。

三、如何用好range函数?

        为了充分利用Python中的range()函数,请你遵循以下建议:

1、理解参数:确保你清楚range()函数的三个参数:start(起始值,默认为0),stop(终止值,不包括在内)和step(步长,默认为1)。

2、简洁的循环:使用range()函数可以简洁地编写循环,而无需手动创建数字列表。

3、步长迭代:利用步长参数step来迭代跳过某些值或反向迭代。

4、转换为列表:如果你需要操作整个序列,或者需要多次迭代它,可以将range()对象转换为列表。

5、避免在循环中修改索引:尽管技术上你可以在循环中修改循环变量(如i),但这通常是不必要的,因为range()函数生成的序列是不可变的。

6、使用切片:虽然range()对象本身不支持切片,但你可以将其转换为列表后再进行切片操作。

7、数学运算:结合sum()、min()、max()等内置函数,对range()生成的序列进行数学运算。

8、避免不必要的转换:如果你不需要整个序列,那么就没有必要将其转换为列表,直接使用range()对象进行迭代更加内存友好。

9、与其他序列类型结合使用:你可以使用range()函数生成的索引来访问列表、元组或其他序列类型的元素。

10、理解range()与xrange()的区别(Python 2):如果你正在使用Python 2,请注意range()函数会生成一个列表,而xrange()会生成一个类似迭代器的对象,更加节省内存;在Python 3中,range()的功能与Python 2中的xrange()相同。

11、利用列表推导式(List Comprehensions):虽然这不是直接使用range(),但你可以结合使用列表推导式和range()来创建更复杂的列表。

12、文档和示例:经常查阅Python官方文档,以及查找和阅读使用range()函数的示例代码,这有助于你更好地理解其用法和最佳实践。

1、range函数:
1-1、Python:
  1. # 1.函数:range
  2. # 2.功能:用于生成一个新的range类型,多用于for循环语句中,用于生成指定范围的整数
  3. # 3.语法:
  4. # 3-1、range(stop)
  5. # 3-2、range(start, stop)
  6. # 3-3、range(start, stop[, step])
  7. # 4.参数:
  8. # 4-1、start:表示起始整数(包括起始整数),默认起始值为0,起始整数可以省略,若省略,则默认从0开始
  9. # 4-2、stop:表示结束整数(但不包括结束整数),结束整数不能省略
  10. # 4-3、step:表示步长,即两个数之间的间隔,如果省略step参数,则默认步长为1
  11. # 5.返回值:返回的是一个不可变的序列类型,但它本身并不是列表,而是一个range对象
  12. # 6.说明:
  13. # 6-1、参数stop可以大于0,也可以小于或等于0,但是当stop参数小于或等于0时,生成的range对象是不包含任何元素的
  14. # 6-2、range()函数接收的参数必须是整数,不能是浮点数等其他数据类型,否则会提示类型错误
  15. # 6-3、在使用range()函数时,如果只有1个参数,那么表示指定得是stop结束整数;如果是两个参数,则表示指定得是start起始整数和stop结束整数;只有3个参数都存在,最后一个参数才表示step步长
  16. # 7.示例:
  17. # 用dir()函数获取该函数内置的属性和方法
  18. print(dir(range))
  19. # ['__bool__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__',
  20. # '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__',
  21. # '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__',
  22. # '__sizeof__', '__str__', '__subclasshook__', 'count', 'index', 'start', 'step', 'stop']
  23. # 用help()函数获取该函数的文档信息
  24. help(range)
  25. # 应用一:循环遍历固定次数的操作
  26. # 示例1:打印从0到4的数字
  27. for i in range(5):
  28. print(i)
  29. # 0
  30. # 1
  31. # 2
  32. # 3
  33. # 4
  34. # 示例2:遍历一个列表并打印其索引和值
  35. my_list = ['apple', 'banana', 'cherry']
  36. for index in range(len(my_list)):
  37. print(f"Index: {index}, Value: {my_list[index]}")
  38. # Index: 0, Value: apple
  39. # Index: 1, Value: banana
  40. # Index: 2, Value: cherry
  41. # 示例3:使用range()生成一个包含奇数的列表
  42. odd_numbers = [i for i in range(1, 10, 2)]
  43. print(odd_numbers)
  44. # [1, 3, 5, 7, 9]
  45. # 示例4:使用range()进行固定次数的操作(例如,重复一个操作10次)
  46. for _ in range(10): # 使用 _ 作为循环变量,因为我们不关心它的具体值
  47. # 这里放你想要重复的操作
  48. print("This operation is repeated 10 times.")
  49. # This operation is repeated 10 times.
  50. # This operation is repeated 10 times.
  51. # This operation is repeated 10 times.
  52. # This operation is repeated 10 times.
  53. # This operation is repeated 10 times.
  54. # This operation is repeated 10 times.
  55. # This operation is repeated 10 times.
  56. # This operation is repeated 10 times.
  57. # This operation is repeated 10 times.
  58. # This operation is repeated 10 times.
  59. # 示例5:从10倒数到1(包括1和10)
  60. for i in range(10, 0, -1): # 从10开始,到0(不包括),步长为-1
  61. print(i)
  62. # 10
  63. # 9
  64. # 8
  65. # 7
  66. # 6
  67. # 5
  68. # 4
  69. # 3
  70. # 2
  71. # 1
  72. # 应用二:索引访问列表/元组/字符串
  73. # 示例1:访问列表的元素
  74. my_list = ['apple', 'banana', 'cherry', 'date', 'elderberry']
  75. # 使用range()和len()来遍历列表的索引
  76. for index in range(len(my_list)):
  77. print(f"Index {index}: {my_list[index]}")
  78. # Index 0: apple
  79. # Index 1: banana
  80. # Index 2: cherry
  81. # Index 3: date
  82. # Index 4: elderberry
  83. # 示例2:访问元组的元素
  84. my_tuple = ('apple', 'banana', 'cherry')
  85. # 直接使用range()和已知的长度来遍历元组的索引
  86. for index in range(len(my_tuple)):
  87. print(f"Index {index}: {my_tuple[index]}")
  88. # Index 0: apple
  89. # Index 1: banana
  90. # Index 2: cherry
  91. # 示例3:访问字符串的字符(索引)
  92. my_string = "myelsa"
  93. # 使用range()和len()来遍历字符串的索引
  94. for index in range(len(my_string)):
  95. print(f"Index {index}: {my_string[index]}")
  96. # Index 0: m
  97. # Index 1: y
  98. # Index 2: e
  99. # Index 3: l
  100. # Index 4: s
  101. # Index 5: a
  102. # 示例4:使用enumerate()函数(range()函数的替代方案,更简洁高效)
  103. my_list = ['apple', 'banana', 'cherry']
  104. # 使用enumerate()来遍历列表的索引和值
  105. for index, value in enumerate(my_list):
  106. print(f"Index {index}: {value}")
  107. my_tuple = ('apple', 'banana', 'cherry')
  108. # 类似地,使用enumerate()来遍历元组
  109. for index, value in enumerate(my_tuple):
  110. print(f"Index {index}: {value}")
  111. my_string = "hello"
  112. # 对于字符串,enumerate()仍然适用
  113. for index, char in enumerate(my_string):
  114. print(f"Index {index}: {char}")
  115. # Index 0: apple
  116. # Index 1: banana
  117. # Index 2: cherry
  118. # Index 0: apple
  119. # Index 1: banana
  120. # Index 2: cherry
  121. # Index 0: h
  122. # Index 1: e
  123. # Index 2: l
  124. # Index 3: l
  125. # Index 4: o
  126. # 应用三:生成步进序列
  127. # 示例1:生成从0开始,步长为2的序列,直到但不包括10
  128. # 使用range(start, stop, step)的形式
  129. for i in range(0, 10, 2):
  130. print(i)
  131. # 0
  132. # 2
  133. # 4
  134. # 6
  135. # 8
  136. # 示例2:生成从5开始,步长为3的序列,直到但不包括20
  137. for i in range(5, 20, 3):
  138. print(i)
  139. # 5
  140. # 8
  141. # 11
  142. # 14
  143. # 17
  144. # 示例3:生成从5开始,步长为-1的序列,直到但不包括0
  145. # 这是一个递减的步进序列
  146. for i in range(5, 0, -1):
  147. print(i)
  148. # 5
  149. # 4
  150. # 3
  151. # 2
  152. # 1
  153. # 示例4:使用列表推导式生成步进序列的列表
  154. # 生成一个包含从0到18之间所有偶数的列表
  155. even_numbers = [i for i in range(0, 19, 2)]
  156. print(even_numbers)
  157. # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
  158. # 示例5:生成一个包含负数的步进序列,并计算其平方
  159. # 生成一个包含从-5到5之间(包括-5但不包括5)所有奇数的序列,并计算它们的平方
  160. for i in range(-5, 5, 2):
  161. square = i ** 2
  162. print(f"{i} 的平方是 {square}")
  163. # -5 的平方是 25
  164. # -3 的平方是 9
  165. # -1 的平方是 1
  166. # 1 的平方是 1
  167. # 3 的平方是 9
  168. # 应用四:创建数字列表
  169. # 示例1:创建一个从0到4的数字列表
  170. # 使用列表推导式
  171. numbers = [i for i in range(5)]
  172. print(numbers)
  173. # 或者使用list()函数
  174. numbers = list(range(5))
  175. print(numbers)
  176. # [0, 1, 2, 3, 4]
  177. # [0, 1, 2, 3, 4]
  178. # 示例2:创建一个从1到10的数字列表(包含10)
  179. numbers = [i for i in range(1, 11)]
  180. print(numbers)
  181. # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  182. # 示例3:创建一个从10到0的递减数字列表
  183. numbers = [i for i in range(10, -1, -1)]
  184. print(numbers)
  185. # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
  186. # 示例4:创建一个步长为2的数字列表
  187. numbers = [i for i in range(0, 10, 2)]
  188. print(numbers)
  189. # [0, 2, 4, 6, 8]
  190. # 示例5:创建一个包含特定范围内偶数的列表
  191. # 例如,包含2到18之间的所有偶数
  192. numbers = [i for i in range(2, 19, 2)]
  193. print(numbers)
  194. # [2, 4, 6, 8, 10, 12, 14, 16, 18]
  195. # 应用五:随机选择或打乱顺序
  196. # 示例1:从列表中随机选择一个元素
  197. import random
  198. # 假设我们有一个列表
  199. my_list = [1, 2, 3, 4, 5]
  200. # 使用random.choice从列表中随机选择一个元素
  201. random_element = random.choice(my_list)
  202. print(random_element) # 输出可能是列表中的任何一个元素
  203. # 示例2:打乱列表的顺序(随机排序)
  204. import random
  205. # 假设我们有一个列表
  206. my_list = [1, 2, 3, 4, 5]
  207. # 使用random.shuffle打乱列表的顺序
  208. random.shuffle(my_list)
  209. print(my_list) # 输出是一个被打乱顺序的列表
  210. # 示例3:从range()生成的数字中随机选择一个
  211. import random
  212. # 使用range()生成一个数字范围
  213. numbers = list(range(1, 11)) # 创建一个包含 1 到 10 的列表
  214. # 从这个列表中随机选择一个元素
  215. random_number = random.choice(numbers)
  216. print(random_number) # 输出可能是1到10之间的任何一个数字
  217. # 示例4:打乱由range()生成的数字列表的顺序
  218. import random
  219. # 使用range()生成一个数字范围,并转换为列表
  220. numbers = list(range(1, 11)) # 创建一个包含1到10的列表
  221. # 打乱这个列表的顺序
  222. random.shuffle(numbers)
  223. print(numbers) # 输出是一个被打乱顺序的列表,包含1到10的数字
  224. # 应用六:数学计算
  225. # 示例1:计算数字列表的和
  226. total = 0
  227. for i in range(1, 6): # 迭代从1到5的数字
  228. total += i # 将每个数字加到total上
  229. print("1到5的和是:", total)
  230. # 1到5的和是: 15
  231. # 示例2:计算数字列表的平方和
  232. total = 0
  233. for i in range(1, 6): # 迭代从1到5的数字
  234. total += i ** 2 # 将每个数字的平方加到total上
  235. print("1到5的平方和是:", total)
  236. # 1到5的平方和是: 55
  237. # 示例3:计算阶乘
  238. factorial = 1
  239. n = 5
  240. for i in range(1, n + 1): # 迭代从1到n的数字
  241. factorial *= i # 将每个数字乘到factorial上
  242. print(f"{n} 的阶乘是:", factorial)
  243. # 5 的阶乘是: 120
  244. # 示例4:计算斐波那契数列的前几项
  245. def fibonacci(n):
  246. a, b = 0, 1
  247. fib_sequence = [a]
  248. for _ in range(n):
  249. a, b = b, a + b
  250. fib_sequence.append(b)
  251. return fib_sequence
  252. print(fibonacci(10)) # 打印斐波那契数列的前10项
  253. # [0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
  254. # 示例5:使用range()进行数学模拟(例如计算抛硬币正面朝上的次数)
  255. import random
  256. num_trials = 100 # 抛硬币的次数
  257. num_heads = 0 # 正面朝上的次数
  258. for _ in range(num_trials):
  259. if random.choice(['heads', 'tails']) == 'heads':
  260. num_heads += 1
  261. print(f"抛了 {num_trials} 次硬币,正面朝上的次数是: {num_heads}")
  262. # 抛了 100 次硬币,正面朝上的次数是: 53
  263. # 应用七:生成器表达式和列表解析
  264. # 示例1:使用生成器表达式
  265. # 生成器表达式,用于生成0到9的平方
  266. squares = (i ** 2 for i in range(10))
  267. # 遍历生成器并打印结果
  268. for square in squares:
  269. print(square)
  270. # 0
  271. # 1
  272. # 4
  273. # 9
  274. # 16
  275. # 25
  276. # 36
  277. # 49
  278. # 64
  279. # 81
  280. # 示例2:使用列表解析
  281. # 列表解析,用于生成0到9的平方列表
  282. squares = [i ** 2 for i in range(10)]
  283. # 打印列表
  284. print(squares)
  285. # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  286. # 示例3:带有条件的列表解析
  287. # 列表解析,用于生成0到19之间所有偶数的平方列表
  288. even_squares = [i ** 2 for i in range(20) if i % 2 == 0]
  289. # 打印列表
  290. print(even_squares)
  291. # [0, 4, 16, 36, 64, 100, 144, 196, 256, 324]
  292. # 示例4:使用range()的步长与列表解析
  293. # 列表解析,用于生成从10开始,步长为3,到31结束的数字列表
  294. numbers = [i for i in range(10, 32, 3)]
  295. # 打印列表
  296. print(numbers)
  297. # [10, 13, 16, 19, 22, 25, 28, 31]
  298. # 示例5:结合range()和str.format()使用列表解析
  299. # 列表解析,用于生成一个字符串列表,其中包含从1到5的数字的字符串表示形式,格式为 'Number: X'
  300. strings = ['Number: {}'.format(i) for i in range(1, 6)]
  301. # 打印列表
  302. print(strings)
  303. # ['Number: 1', 'Number: 2', 'Number: 3', 'Number: 4', 'Number: 5']
  304. # 应用八:图形和动画
  305. # 示例1:使用matplotlib绘制一个简单的正弦波
  306. import matplotlib.pyplot as plt
  307. import numpy as np
  308. # 使用 numpy 的 linspace 来生成更平滑的数据点(类似于range的连续版本)
  309. x = np.linspace(0, 2 * np.pi, 100) # 类似于range(0, int(2*np.pi*100), 1)但更平滑
  310. y = np.sin(x)
  311. # 绘制图形
  312. plt.plot(x, y)
  313. plt.title('Simple Sine Wave')
  314. plt.xlabel('x')
  315. plt.ylabel('sin(x)')
  316. plt.grid(True)
  317. plt.show()
  318. # 示例2:使用matplotlib.animation创建一个简单的动画
  319. import numpy as np
  320. import matplotlib.pyplot as plt
  321. import matplotlib.animation as animation
  322. fig, ax = plt.subplots()
  323. # 初始化数据
  324. xdata, ydata = [], []
  325. ln, = plt.plot([], [], 'ro')
  326. def init():
  327. ax.set_xlim(0, 2 * np.pi)
  328. ax.set_ylim(-1, 1)
  329. return ln,
  330. def update(frame):
  331. xdata.append(frame / 100) # 使用类似于range的效果,但这里是连续的
  332. ydata.append(np.sin(frame / 100))
  333. ln.set_data(xdata, ydata)
  334. return ln,
  335. # 创建一个动画对象,每帧更新一次数据
  336. ani = animation.FuncAnimation(fig, update, frames=np.linspace(0, 2 * np.pi, 128),
  337. init_func=init, blit=True)
  338. # 显示动画
  339. plt.show()
  340. # 应用九:算法和数据结构
  341. # 示例1:使用二分查找算法
  342. def binary_search(arr, target):
  343. low = 0
  344. high = len(arr) - 1
  345. while low <= high:
  346. mid = (low + high) // 2
  347. if arr[mid] == target:
  348. return mid
  349. elif arr[mid] < target:
  350. low = mid + 1
  351. else:
  352. high = mid - 1
  353. return -1
  354. # 假设我们有一个已排序的数组
  355. arr = [2, 3, 4, 10, 40]
  356. target = 10
  357. # 使用 range 来模拟数组索引的迭代
  358. for i in range(len(arr)):
  359. # 这里只是为了演示,实际上我们不会这样遍历数组进行二分查找
  360. print(f"Current index: {i}, Value: {arr[i]}")
  361. # 使用二分查找算法查找目标值
  362. result = binary_search(arr, target)
  363. print(f"Target {target} found at index {result} if result != -1 else 'not found'.")
  364. # Current index: 0, Value: 2
  365. # Current index: 1, Value: 3
  366. # Current index: 2, Value: 4
  367. # Current index: 3, Value: 10
  368. # Current index: 4, Value: 40
  369. # Target 10 found at index 3 if result != -1 else 'not found'.
  370. # 示例2:实现简单的冒泡排序算法
  371. def bubble_sort(arr):
  372. n = len(arr)
  373. for i in range(n):
  374. for j in range(0, n - i - 1): # 最后一个元素已经是最大的,不需要再比较
  375. if arr[j] > arr[j + 1]:
  376. arr[j], arr[j + 1] = arr[j + 1], arr[j] # 交换元素
  377. # 示例数组
  378. arr = [64, 34, 25, 12, 22, 11, 90]
  379. print("Original array is:", arr)
  380. # 对数组进行冒泡排序
  381. bubble_sort(arr)
  382. print("Sorted array is:", arr)
  383. # Original array is: [64, 34, 25, 12, 22, 11, 90]
  384. # Sorted array is: [11, 12, 22, 25, 34, 64, 90]
  385. # 示例3:使用动态规划解决斐波那契数列问题
  386. def fibonacci(n):
  387. if n <= 1:
  388. return n
  389. dp = [0] * (n + 1)
  390. dp[0], dp[1] = 0, 1
  391. for i in range(2, n + 1):
  392. dp[i] = dp[i - 1] + dp[i - 2]
  393. return dp[n]
  394. # 示例:计算斐波那契数列的第168项
  395. print(fibonacci(168))
  396. # 57602132235424755886206198685365216
  397. # 示例4:使用栈实现逆序列表
  398. class Stack:
  399. def __init__(self):
  400. self.stack = []
  401. def push(self, item):
  402. self.stack.append(item)
  403. def pop(self):
  404. if not self.is_empty():
  405. return self.stack.pop()
  406. return None
  407. def is_empty(self):
  408. return len(self.stack) == 0
  409. # 使用栈逆序列表
  410. def reverse_list_using_stack(lst):
  411. stack = Stack()
  412. for item in lst:
  413. stack.push(item)
  414. reversed_lst = []
  415. while not stack.is_empty():
  416. reversed_lst.append(stack.pop())
  417. return reversed_lst
  418. # 示例列表
  419. lst = [1, 2, 3, 4, 5]
  420. print("Original list:", lst)
  421. reversed_lst = reverse_list_using_stack(lst)
  422. print("Reversed list:", reversed_lst)
  423. # Original list: [1, 2, 3, 4, 5]
  424. # Reversed list: [5, 4, 3, 2, 1]
  425. # 应用十:科学计算和数据分析
  426. # 示例1:计算数列和
  427. # 计算从1到n的自然数之和
  428. def sum_of_series(n):
  429. total = 0
  430. for i in range(1, n + 1):
  431. total += i
  432. return total
  433. # 示例
  434. n = 10
  435. print(f"The sum of numbers from 1 to {n} is {sum_of_series(n)}")
  436. # The sum of numbers from 1 to 10 is 55
  437. # 示例2:使用NumPy进行数组操作
  438. import numpy as np
  439. # 创建一个从0到9的数组
  440. arr = np.arange(10)
  441. # 计算每个元素的平方
  442. squared_arr = arr ** 2
  443. print(squared_arr)
  444. # [ 0 1 4 9 16 25 36 49 64 81]
  445. # 示例3:计算数列的平均值
  446. # 使用range生成数列,并计算平均值
  447. def average_of_series(n):
  448. total = sum(range(1, n + 1))
  449. return total / n
  450. # 示例
  451. n = 10
  452. print(f"The average of numbers from 1 to {n} is {average_of_series(n)}")
  453. # The average of numbers from 1 to 10 is 5.5
  454. # 示例4:使用Pandas进行数据分析
  455. import pandas as pd
  456. # 使用range生成索引和列名
  457. index = range(1, 6) # 索引从1到5
  458. columns = ['A', 'B', 'C']
  459. # 创建一个示例数据帧
  460. data = {'A': [1, 2, 3, 4, 5],
  461. 'B': [10, 20, 30, 40, 50],
  462. 'C': [100, 200, 300, 400, 500]}
  463. df = pd.DataFrame(data, index=index)
  464. # 显示数据帧
  465. print(df)
  466. # 使用range迭代数据帧的行
  467. for i in range(len(df)):
  468. row = df.iloc[i]
  469. print(f"Row {i + 1}: {row.values}")
  470. # A B C
  471. # 1 1 10 100
  472. # 2 2 20 200
  473. # 3 3 30 300
  474. # 4 4 40 400
  475. # 5 5 50 500
  476. # Row 1: [ 1 10 100]
  477. # Row 2: [ 2 20 200]
  478. # Row 3: [ 3 30 300]
  479. # Row 4: [ 4 40 400]
  480. # Row 5: [ 5 50 500]
  481. # 示例5:在图形中标记数据点
  482. import matplotlib.pyplot as plt
  483. # 假设我们有一些x和y数据点
  484. x = [1, 2, 3, 4, 5]
  485. y = [1, 4, 9, 16, 25]
  486. # 绘制散点图
  487. plt.scatter(x, y)
  488. # 使用range生成标签并添加到图中
  489. for i in range(len(x)):
  490. plt.text(x[i], y[i], f'({x[i]}, {y[i]})', ha='center', va='bottom')
  491. plt.show()
1-2、VBA:
略,待后补。
2、推荐阅读:

2-1、Python-VBA函数之旅-property()函数

Python算法之旅:Algorithm

Python函数之旅:Functions

个人主页:https://blog.csdn.net/ygb_1024?spm=1010.2135.3001.5421 
文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览61139 人正在系统学习中
遨游码海,我心飞扬
微信名片
注:本文转载自blog.csdn.net的神奇夜光杯的文章"https://myelsa1024.blog.csdn.net/article/details/138542714"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top