-1

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

4

4 回答 4

1
>>> list1 = [1, 2, 3]
>>> [x * 3 for x in list1]
[3, 6, 9]
>>>
于 2012-10-12T12:46:19.787 回答
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'
于 2012-10-12T12:44:41.637 回答
0

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

>>> map(lambda x: x*3, [12, 1, 42])
[36, 3, 126]
于 2012-10-12T12:57:30.593 回答
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,它实现了双链表(并且可以像单链表一样使用)。

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

于 2012-10-12T12:49:22.563 回答