对于这项练习,哪种方式更"Pythonic"?

Tru*_*oll 0 python

我在这里有一个任务:

给定一组int,返回数组中9的数量.

array_count9([1, 2, 9]) ? 1
array_count9([1, 9, 9]) ? 2
array_count9([1, 9, 9, 3, 9]) ? 3
Run Code Online (Sandbox Code Playgroud)

我有2个想法,一个是:

def array_count9(nums):
    count = 0
    list1 = [x for x in nums if x==9]
    return len(list1)
Run Code Online (Sandbox Code Playgroud)

和另外一个:

def array_count9(nums):
    count = 0
    for n in nums:
        if n==9:
            count +=1
    return count
Run Code Online (Sandbox Code Playgroud)

但我想知道在性能,清晰度方面,哪种方式更像Pythonic ......?非常感谢你

Ósc*_*pez 6

count在这种情况下,最Pythonic方式是使用内置函数.试试这个:

def array_count9(nums):
  return nums.count(9)
Run Code Online (Sandbox Code Playgroud)