2012-03-09 86 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]

相關問題