如何将链表的每个点乘以数字x?

时间:2012-10-12 12:43:29

标签: python linked-list

假设有一个链接列表,每个整数在123中有一个点,head是1,next是2,next是3,你如何将每个元素乘以一个数字,让我们说3,这样新的链接列表指向3,6,9?

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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'

答案 2 :(得分: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没有简单的链接列表作为内置类型。 deque模块中有一个collections类型,它实现了一个双链表(并且可以像单链表一样使用)。

您可能正在实施自己的链表类(用于家庭作业)?

答案 3 :(得分:0)

假设您的列表是可迭代的:

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