2012-10-12 45 views
-1

假設在123中有一個鏈接列表,每個整數都有一個點,head是1,next是2,next是3,如何將每個元素乘以一個數字,比方說3,這樣新的鏈表指向3,6,9?你如何將一個鏈表中的每個點乘以一個數字x?

+7

Python沒有內置鏈表類型你是問一下自己的鏈接列表類型(在這種情況下,你應該表現出來),或約正常Python列表(它們沒有鏈接)? – interjay

回答

0

使用列表理解:

In [1]: lis=[1,2,3] 

In [2]: [x*3 for x in lis] 
Out[2]: [3, 6, 9] 


In [3]: num=123 

In [4]: [int(x)*4 for x in str(num)] #convert num to a string and iterate over it 
Out[4]: [4, 8, 12] 

In [5]: ''.join(str(int(x)*3) for x in str(num)) #to get something like 4812 
Out[5]: '4812' 
+0

這假定鏈表已經定義了一個迭代器,對於自定義類型可能是也可能不是。否則它將取決於列表。 –

+0

很酷,如果它是123 * 4呢?此方法可能不適用於要乘以的所有x值?抱歉,在關於我想要的問題中不清楚。 –

+0

@RahulSharma 123不是一個列表。 –

1
>>> list1 = [1, 2, 3] 
>>> [x * 3 for x in list1] 
[3, 6, 9] 
>>> 
0

的算法很簡單:

def multiply(L, x): 
    if L.is_empty(): 
     return L 
    else: 
     return join(L.head * x, multiply(L.tail, x)) 

其中 「L.head」 是第一要素,L.tail是剩下的列表, join是一個函數,它把第一個參數作爲列表的第一個元素放在第二個參數中(所以join(1,[2,3]) - > [1,2,3])。

Python沒有簡單的鏈接列表作爲內置類型。 collections模塊中有一個deque類型,它實現了一個雙鏈表(並且可以像使用單鏈表一樣使用)。

也許你正在實現自己的鏈表類(作業)?

0

假設你的列表是迭代:

>>> map(lambda x: x*3, [12, 1, 42]) 
[36, 3, 126] 
相關問題