假设有一个链表,123 中的每个整数都有一个点,head 是 1,next 是 2,next 是 3,如何将每个元素乘以一个数字,比如说 3,这样新的链表指向3,6,9?
问问题
160 次
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 回答