2013-05-25 2 views
0

Heres кода питонахитрость для написания чистого кода

def issubset(a,b): i=0 
j=0 
while i < len(a): 
     c = False 
     while j < len(b): 
      if a[i] == b[j]: 
       c = True 
       j = j+1 
      if c: 
       c = False 
      else: 
       return False 
     j=0 
     i = i+1 
return True 

Есть несколько трюков, которые могут сделать выше код понятнее.

def issubset(a, b): 
    for i in range(len(a)): 
     c = False 
     for j in range(len(b)): 
      c = c or a[i]==b[j] 
      if c: 
       c = False 
      else: 
       return False 
    return True 

Не может быть чище? Я предполагаю, что есть некоторые хитрости, как

if condition: 
    <var> = True 

может заменить

<var> = <var> or condition 

или если tempokay == Ложные: хорошо = False может заменить

okay = okay and tempokay 

Есть больше трюков вроде этого?

+1

это может быть лучше подходит для codereview.stackexchange – dm03514

+2

@ dm03514 может быть, не потому, что это не похоже на работу – jamylak

+1

'все (х в Ь для х в а)' или лучше 'set (a) .issubset (b)'. –

ответ

4

похоже, что вы используете индексы в своем цикле для доступа к элементам массива. Это не питонический.

Просто цикл через массив

for member in your_list: 
    for member_two in second_list: 
     pass 
+0

Спасибо! Как насчет этих утверждений if? он выглядит громоздким –

Смежные вопросы