2012-03-09 62 views
0

我需要能够将项目添加到列表b中的列表a中。列表b中的项目将尽快添加' ',这是双重空间的标识。从python中的另一个列表中添加项目

因此,如果列表中的第一项不是双倍空间,则循环继续检查列表中的下一项,如果它也不是双倍空间,则继续直到找到双倍空间为止那么它将用列表b中的项目替换第一个可用的双倍空间。这应该循环,以便如果我再次运行该函数,弹出列表b中的项目并将其添加到列表a中的下一个可用双倍空间。

a = ['a','c','e','j','h',' ',' ',' ',' '] 
b = ['b','d','f','i','g'] 

x = 4 
for item in a: 
    if item == a[4]: 
     break 
if a[x] != ' ': 
    a[x+1] = b.pop(-2) 

else: 
    a[x] = a[x+1] 

print("list a: ",a) 
print("List b: ",b) 

输出:

list a: ['a', 'c', 'e', 'j', 'h', 'i', ' ', ' ', ' '] 
List b: ['b', 'd', 'f', 'g'] 

这一工程,但我有一种感觉,我的代码不会对所有的输入工作。可以?如果没有,那有什么问题?

+0

所以它的工作与否? 'x = 4'是'i',''我真的'从b'移动到'list a'中的第一个可用位置。 – 2012-03-09 20:21:10

+0

@OfirBaruch;我有点欺骗,让它起作用,但我认为x应该= 0,使它能够从列表a中的第一项开始检查。但我不能让它与x = 0一起工作。 – Lycon 2012-03-09 20:25:53

+0

所以我正确理解这一点?你需要用b中的元素替换a中的每个双空格,按顺序? – aeroNotAuto 2012-03-09 20:29:06

回答

2

我认为这是你在找什么:

def move_item(a, b): 
    a[a.index(' ')] = b.pop() 

>>> a = ['a','c','e','j','h',' ',' ',' ',' '] 
>>> b = ['b','d','f','i','g'] 
>>> move_item(a, b) 
>>> print('list a: ', a, '\nlist b: ', b) 
list a: ['a', 'c', 'e', 'j', 'h', 'g', ' ', ' ', ' '] 
list b: ['b', 'd', 'f', 'i'] 
>>> move_item(a, b) 
>>> print('list a: ', a, '\nlist b: ', b) 
list a: ['a', 'c', 'e', 'j', 'h', 'g', 'i', ' ', ' '] 
list b: ['b', 'd', 'f'] 
+0

但我只需要从列表b中的一个项目。我怎么能编辑你的代码来实现这一点。 – Lycon 2012-03-09 20:35:24

+0

@Lycon - 我已经编辑了我的答案,以便一次完成这一项。 – 2012-03-09 20:38:36

0

你没有问一个问题,但这里有一些提示:

list.indexlist.popa[index_of_doublespace] = popped_value_from_b

0

由于这我只是想给你一些提示:

  1. 您需要与a指标的工作:

    for i in range(len(a)): 
        if a[i] == ??? : 
         a[i] = ?? 
    
  2. 你为什么突然出现了-2个元素?看看pop做什么。

2

此:

a = [b.pop() if item == ' ' else item for item in a] 

让你:

['a', 'c', 'e', 'j', 'h', 'g', 'i', 'f', 'd'] 

看看Python list comprehensions

0

我猜你想这样做:

[x.split(' ')[0] or b.pop() for x in a]

相关问题