我正在使用Bisect函数在python中编写一个简单的集合抽象。这里的问题是当我使用insort函数在列表中添加数据时,该函数返回None。但是当我使用BISECT.BISECT(lst,ele)时,该函数返回的值将是可以插入元素的列表的索引(如果需要)。
# Python program to implement collection abstraction
# using Bisect Algorithm
# The program would add an element into the SORTED LIST"
# which would be the input
# The program would test whether the element is in the collection
# And also, to return the element of the collection if it is there
from bisect import bisect
from bisect import insort_right
the_list = []
def add(lst,ele):
return insort_right(lst,ele)
#def test(lst,ele)
#def remove(lst,ele):
print("Enter the size of the list:")
N = int(input())
for x in range(N):
x = input("")
the_list.append(x)
the_list.sort()
print(the_list)
print("Enter the element to be added in the list")
element = input("")
add_element = add(the_list,element)
print("The element is added in collection at location:", add_element)
答案 0 :(得分:1)
insort
不会返回值,因为它会更改列表本身。通常,以这种方式使用副作用的Python函数不返回值。如果要从add
返回修改后的列表,请执行以下操作:
def add(lst, ele):
insort_right(lst, ele)
return lst
但这样做真的没有意义,因为返回的列表与传入的列表相同。调用上下文已经可以访问该列表,所以不需要返回它,这样做是一个有点单调。