2012-10-12 1 views
-1

123에있는 각 정수에 대한 점이있는 링크 된 목록이 있다고 가정 해 봅시다. 머리는 1이고, 다음은 2이고, 다음은 3입니다. 어떻게 각 요소에 숫자를 곱하면 3이라고 가정 해 봅시다. 그러면 새 연결된 목록 3,6,9 점?연결된 목록의 각 지점에 숫자 x를 곱하면 어떻게됩니까?

+7

파이썬에 내장 된 연결리스트 형식이없는 당신은 (이 경우 당신이 그것을 표시해야합니다) 자신의 연결 목록 유형에 대해, 또는 일반에 대해 묻는 파이썬리스트 (링크되어 있지 않음)? – 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

알고리즘은 간단

"L.head는"첫 번째 요소이다
def multiply(L, x): 
    if L.is_empty(): 
     return L 
    else: 
     return join(L.head * x, multiply(L.tail, x)) 

가 L.tail 나머지 목록이며 join은 첫 번째 인수를 두 번째 인수에 목록의 첫 번째 요소로 넣는 함수입니다 (join (1, [2,3]) -> [1,2,3]).

파이썬에는 내장 된 유형으로 간단한 링크 된 목록이 없습니다. collections 모듈에는 deque 유형이 있으며 이중 링크 목록을 구현합니다 (단일 링크 목록 인 것처럼 사용할 수 있음).

아마 당신은 자신의 링크드 목록 클래스 (숙제를 위해)를 구현하고 있습니까?

0

목록을 가정하고 반복 가능한이다.

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