2011-04-07 99 views
2

我有2個列表:第一個是我需要使用的列表,第二個列表是-1。 首先,我需要找到數字的divison的剩餘部分(數字是len(lst)),並將其置於-1的列表中的位置(除數的其餘部分)。 如果已經存在元素,則返回列表中的下一個位置(如果下一個位置不爲空,則轉到下一個位置,直到找到位置)。如何實現粗體的部分?Python中的列表問題

# -*- coding: utf-8 -*- 
def fun(lst): 
    count = [-1] * (len(lst) + 1) 
    jar = [] 
    for i in range(len(lst)): 
     jar.append(lst[i]%(len(lst) + 1)) 
     if count[jar[i]] == -1: 
      count[jar[i]] = jar[i] 
     else: 
      arv[jar[i] + 1] = jar[i] # problem starts here 
    print jar 

lst = [26, 53, 12, 65, 39, 6] 
lst = fun(lst) 
+0

什麼是'arv'? (問題出現在哪裏?) – 2011-04-07 17:42:18

+0

爲什麼你給'lst [i]%len(lst)'加1?如果你有可能在輸入列表中獲得花車,我認爲math.ceil會更好。 – TheDude 2011-04-07 17:45:53

回答

3

你介紹一下arv,但是你從來沒有給它一個字典。既然是一個字典,分配ARV爲:

arv = {} 

我也將使用:

for i,elem in enumerate(lst): 

您現在可以遍歷LST的同時,也知道它的位置。

+1

你不用Python聲明變量。你正在做的是給變量賦一個空字典。 – geoffspear 2011-04-13 17:40:52

+0

@Wooble改變了我的答案,包括你的改正! – TheDude 2012-01-16 20:30:12

1

你一個註釋標示的線指的是不存在的名單(arv),我不能告訴你這是什麼意思。

+0

但如何解決這個問題? – Bob 2011-04-07 17:38:54

+4

不,數字是不可變的。所以,'[-1] * len(lst)'沒有問題。 – 2011-04-07 17:39:49

+0

@N 1.1:我改變了我的答案。 – Tom 2011-07-26 22:43:27