python-创建具有给定范围的数字列表


给定两个数字r1r2(定义范围),编写一个 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 循环中从r1r2迭代“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 的数字列表。

使用 numpy.arange()

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]

使用 numpy 创建给定范围的数字列表

在这里,我们使用定义的增量创建给定范围内的数字列表。

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 是列表中元素的数量。

方法 5:使用 map() 和 lambda 函数

在这种方法中,我们使用 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