给定两个数字r1和r2(定义范围),编写一个 Python 程序来创建具有给定范围(含)的列表。
例子:
输入: r1 = -1,r2 = 1 输出: [-1, 0, 1] 输入: r1 = 5,r2 = 9 输出: [5,6,7,8,9]
在给定范围内创建列表的简单方法是首先创建一个空列表,并在 for循环的每次迭代中附加每个整数的后继。
# Python3 Program to Create list # with integers within given range def createList(r1, r2): # Testing if range r1 and r2 # are equal if (r1 == r2): return r1 else: # Create empty list res = [] # loop to append successors to # list until r2 is reached. while(r1 < r2+1 ): res.append(r1) r1 += 1 return res # Driver Code r1, r2 = -1, 1 print(createList(r1, r2))
输出:
[-1,0,1]
我们还可以使用列表理解来达到此目的。只需在 for 循环中从r1到r2迭代“item” ,并将所有“item”作为列表返回。这将是一个简单的单行代码。
# Python3 Program to Create list # with integers within given range def createList(r1, r2): return [item for item in range(r1, r2+1)] # Driver Code r1, r2 = -1, 1 print(createList(r1, r2))
输出: [-1,0,1]
您还可以将 range 函数与 itertools 模块的 chain 函数结合使用来创建具有给定范围的数字列表。这可以按如下方式完成:
# Python3 Program to Create list # with integers within given range def createList(r1, r2): return list(range(r1, r2+1)) # Driver Code r1, r2 = -1, 1 print(createList(r1, r2))
输出
[-5、-4、-3、-2、-1、0、1、2、3、4、5]
这将通过使用 itertools 模块中的 chain 函数将范围内的元素链接在一起,创建从 r1 到 r2 的数字列表。
Python numpy.arange()返回一个列表,其中元素按照间隔均匀分布。这里我们根据需要将间隔设置为1以获得所需的输出。
# Python3 Program to Create list # with integers within given range import numpy as np def createList(r1, r2): return np.arange(r1, r2+1, 1) # Driver Code r1, r2 = -1, 1 print(createList(r1, r2))
在这里,我们使用定义的增量创建给定范围内的数字列表。
import numpy as np def fun(start, end, step): num = np.linspace(start, end,(end-start) *int(1/step)+1).tolist() return [round(i, 2) for i in num] print(fun(1,5,0.5))
[1.0、1.5、2.0、2.5、3.0、3.5、4.0、4.5、5.0]
创建给定范围内的数字列表的另一种方法是使用递归。这涉及定义一个递归函数,该函数接受当前范围和要返回的列表,然后将当前范围附加到列表中,并使用下一个范围再次调用该函数,直到到达该范围的末尾。
def create_list(r1, r2, lst): # Base case: if r1 is equal to r2, return the list if r1 == r2+1: return lst # Otherwise, append r1 to the list and call the function again with r1 + 1 else: lst.append(r1) return create_list(r1 + 1, r2, lst) # Test the function print(create_list(5, 9, [])) # [5, 6, 7, 8, 9] print(create_list(-1, 1, [])) # [-1, 0, 1] #This code is contributed by Edula Vinay Kumar Reddy
[5,6,7,8,9] [-1,0,1]
这种方法的时间复杂度为 O(n),辅助空间为 O(n),其中 n 是列表中元素的数量。
在这种方法中,我们使用 map() 和 lambda 函数来生成给定范围内的数字列表。map() 将 lambda 函数应用于序列中的每个元素并返回一个映射对象。我们将地图对象转换为列表并返回它。
使用 map() 和 lambda 函数生成给定范围内的数字列表。 将地图对象转换为列表并返回。
def create_list(r1, r2): return list(map(lambda x: x, range(r1, r2+1))) # Test the function print(create_list(5, 9)) # [5, 6, 7, 8, 9] print(create_list(-1, 1)) # [-1, 0, 1]
时间复杂度:O(r2-r1),其中 r1 和 r2 是给定范围。 空间复杂度:O(r2-r1),其中 r1 和 r2 是给定范围。
原文链接:codingdict.net