0

假设您有一个元组列表,例如:

list1 = [(0, 0, 0), (1, 0, 0), (2, 0, 0), (3, 0, 0)]

并且您想将元组 (0, 1, 0) 添加到它应该按顺序排列的列表中:

list1 = [(0, 0, 0), (0,1,0), (1, 0, 0), (2, 0, 0), (3, 0, 0)] 

并说您还想将元组 (0,1,1) 添加到它应该按顺序排列的列表中:

list1 = [(0, 0, 0), (0,1,0), (0,1,1), (1, 0, 0), (2, 0, 0), (3, 0, 0)] 

并说您还想将元组 (3,1,0) 添加到它应该按顺序排列的列表中:

list1 = [(0, 0, 0), (0,1,0), (0,1,1), (1, 0, 0), (2, 0, 0), (3, 0, 0), (3, 1, 0)] 

我想尝试提出一个函数,该函数根据元组中的值(def(value1,value2,value3):...)采用三个参数,并使用它可以找到索引值并将元组插入以正确的顺序列出。发现它非常困难和帮助将不胜感激

4

4 回答 4

2

list1如果已排序,则插入单个元组:

import bisect

bisect.insort(list1, (0, 1, 0))

合并两个排序列表:

import heapq

tuples = [(0,1,0), (0,1,1), (3,1,1)]
list1 = list(heapq.merge(list1, tuples))

或者对于小列表 ( len(L) < 1000000):

list1.extend(tuples)
list1.sort()
于 2013-03-03T18:44:51.660 回答
1

为了简单起见,只需附加新值并对列表进行排序:

a = [(0, 0, 0), (1, 0, 0), (2, 0, 0), (3, 0, 0)]

def add_to_list(item1, item2, item3, the_list):
    the_list.append((item1, item2, item3))
    return sorted(the_list)    

print(add_to_list(0, 1, 0, a))
于 2013-03-03T18:25:51.143 回答
0
>>> def fun(value1, value2, value3):
        tup = (value1, value2, value3)
        list1.append(tup)
        list1.sort()
        return(list1)

>>> list1 = [(0, 0, 0), (0,1,0), (1, 0, 0), (2, 0, 0), (3, 0, 0)] 
>>> fun(0,1,1)
[(0, 0, 0), (0, 1, 0), (0, 1, 1), (1, 0, 0), (2, 0, 0), (3, 0, 0)]
于 2013-03-03T18:24:35.187 回答
0

不带写功能:

a = [(0, 0, 0), (1, 0, 0), (2, 0, 0), (3, 0, 0)]
a = sorted(a+[(0,1,1)])

使用函数(t 是元组):

f = lambda a,t: sorted(a+[t])
a = f(a, (1, 1, 0))
于 2013-03-03T18:35:05.233 回答