给定两个数字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))
输出:
[-1,0,1]
在这里,我们使用定义的增量创建给定范围内的数字列表。
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]
输出
[5,6,7,8,9]
[-1,0,1]
时间复杂度:O(r2-r1),其中 r1 和 r2 是给定范围。 空间复杂度:O(r2-r1),其中 r1 和 r2 是给定范围。
原文链接:codingdict.net