使用条件连接两个列表

时间:2015-12-12 03:14:55

标签: python algorithm list

我需要使用两个列表转换为列表A的条件来连接列表BC,并且长度相同,但每个i元素都没有t更改位置和列表已排序。否则返回空列表:

A = ['a', 'b', 'c']
B = ['x', 'y', 'z']

连接到:C = ['a', 'b', 'z']

A = ['8', '2', '3']
B = ['1', '2', '0']

连接到:C = ['1', '2', '3']

我完全不知道如何开始解决我的问题。我必须使用哪种算法?

UPD:

另一个例子:

A = ['a', 'b', 'c']
B = ['x', 'x', 'x']

结果是:['a', 'b', 'x']

A = ['b', 'a']
B = ['x', 'c']

结果必须是:['b', 'c']

这两个列表的连接结果是一个空列表:

A = ['e','a'], 
B = ['f','b']

2 个答案:

答案 0 :(得分:0)

您只需要切换每个列表中的最后两个元素吗?如果是这样,这是一种让您了解正在发生的事情的简单方法。

lst1 = ['a', 'b', 'c']
lst2 = ['x', 'x', 'x']

lst3 = lst1
lst3[len(lst2)-1] = lst2[len(lst2)-1]

lst3
Out: ['a', 'b', 'x']

否则,请解释您尝试再做一些事情背后的逻辑。

答案 1 :(得分:0)

这可以通过贪婪算法完成,迭代两个列表并获取比您之前的项目更大的最小值。

prev = None
A = ['a', 'b', 'c']
B = ['x', 'x', 'x']
n = len(A)
result = []
for i in range(n):
    mn, mx = A[i],B[i]
    if mx<mn:
       mn,mx = mx,mn
    if prev == None or mn >= prev:
       prev = mn
       result.append(prev)
    elif mx >= prev:
       prev = mx
       result.append(prev)
    else:
       print "can't be done"
       break
if len(result) == n:
    print result