Lọc số chẵn trong danh sách Python

Chạy trong trăn 3. phiên bản x


Ở đây chúng tôi viết một chương trình để lọc một số chẵn từ danh sách bằng hàm lọc và lambda


Giả sử danh sách là

li = [1,2,3,4,5,6,7,8,9,10]


Dung dịch


li = [1,2,3,4,5,6,7,8,9,10]
 
eve_num = filter[lambda x: x%2==0, li]
 
print[eve_num] 
 

Chương trình python khác của Codersarts


  • Đối với giá trị vĩ độ nhất định, hãy kiểm tra vị trí trên đường xích đạo trong python

  • Tính khoảng cách giữa hai điểm trên Trái đất theo vĩ độ và kinh độ tính bằng độ

  • Tính diện tích tam giác trong python

  • Viết chương trình cộng, trừ, nhân, chia số hữu tỷ trong python

  • chuyển dms sang dd trong python

  • Thiết kế và triển khai chương trình "Golf Club" ghi lại thông tin về các golf thủ và các giải đấu

  • Nối ký tự đầu tiên, giữa và cuối cùng của Chuỗi trong Python

  • Bộ tiện ích thao tác với đa thức, Cộng, trừ, Nhân, Đánh giá

  • Kiểm tra đơn vị Python với unittest

  • Tìm các khóa khớp trong hai từ điển - python

Để xem chương trình codersarts hoàn chỉnh, nhấp vào liên kết này

Dave, trong biến thể mã của bạn, bạn đặt tên hàm là “myfunc”, nhưng sau đó thử gọi một hàm không tồn tại là “list_even”

Đó là lý do tại sao bạn nhận được lỗi

Bạn dường như có một chút nhầm lẫn về cái tên đi với cái gì. Trong hàm

def myfunc[x]:
    list_even = []
    for n in myfunc:  # WRONG! Change to "for n in x:"
        if not n %2:
            list_even.append[n]
    return list_even

numbers = [2,3,4,6,8,101,103,111,120,124]
print[list_even[numbers]]  # WRONG! Change to "print[myfunc[numbers]]"
5 của bạn, bạn đặt tên cho đối số đầu vào là “x”. Nhưng sau đó bạn thử lặp lại hàm
def myfunc[x]:
    list_even = []
    for n in myfunc:  # WRONG! Change to "for n in x:"
        if not n %2:
            list_even.append[n]
    return list_even

numbers = [2,3,4,6,8,101,103,111,120,124]
print[list_even[numbers]]  # WRONG! Change to "print[myfunc[numbers]]"
5

def myfunc[x]:
    list_even = []
    for n in myfunc:  # WRONG! Change to "for n in x:"
        if not n %2:
            list_even.append[n]
    return list_even

numbers = [2,3,4,6,8,101,103,111,120,124]
print[list_even[numbers]]  # WRONG! Change to "print[myfunc[numbers]]"

Chúng ta có thể cải thiện điều này bằng cách chọn tên tốt hơn, mô tả mục đích của hàm hoặc biến là gì

def get_evens[list_of_numbers]:
    list_of_evens = []
    for n in list_of_numbers:
        if n % 2 != 0:
            list_of_evens.append[n]
    return list_of_evens

numbers = [2, 3, 4, 6, 8, 101, 103, 111, 120, 124]
print[get_evens[numbers]]

Điều xảy ra ở đây là khi trình thông dịch đến dòng

def myfunc[x]:
    list_even = []
    for n in myfunc:  # WRONG! Change to "for n in x:"
        if not n %2:
            list_even.append[n]
    return list_even

numbers = [2,3,4,6,8,101,103,111,120,124]
print[list_even[numbers]]  # WRONG! Change to "print[myfunc[numbers]]"
7, nó sẽ tạo một danh sách các số và đặt tên cho nó là “số”

Đây là một biến toàn cục, bởi vì bất cứ nơi nào bên trong kịch bản của bạn [các. py] có thể nhìn thấy nó - nó là toàn cầu đối với toàn bộ tập lệnh

Khi bạn chuyển biến cho hàm

def myfunc[x]:
    list_even = []
    for n in myfunc:  # WRONG! Change to "for n in x:"
        if not n %2:
            list_even.append[n]
    return list_even

numbers = [2,3,4,6,8,101,103,111,120,124]
print[list_even[numbers]]  # WRONG! Change to "print[myfunc[numbers]]"
8, trình thông dịch sẽ lấy danh sách và đặt cho nó một tên thứ hai, “list_of_numbers”. Không giống như tên “số” là toàn cầu, “list_of_numbers” là một biến cục bộ nên nó chỉ hiển thị đối với mã bên trong hàm
def myfunc[x]:
    list_even = []
    for n in myfunc:  # WRONG! Change to "for n in x:"
        if not n %2:
            list_even.append[n]
    return list_even

numbers = [2,3,4,6,8,101,103,111,120,124]
print[list_even[numbers]]  # WRONG! Change to "print[myfunc[numbers]]"
8

Là cục bộ của hàm

def myfunc[x]:
    list_even = []
    for n in myfunc:  # WRONG! Change to "for n in x:"
        if not n %2:
            list_even.append[n]
    return list_even

numbers = [2,3,4,6,8,101,103,111,120,124]
print[list_even[numbers]]  # WRONG! Change to "print[myfunc[numbers]]"
8, nếu bạn cố gắng tham khảo “list_of_numbers” bên ngoài hàm
def myfunc[x]:
    list_even = []
    for n in myfunc:  # WRONG! Change to "for n in x:"
        if not n %2:
            list_even.append[n]
    return list_even

numbers = [2,3,4,6,8,101,103,111,120,124]
print[list_even[numbers]]  # WRONG! Change to "print[myfunc[numbers]]"
8, bạn sẽ gặp lỗi tên không tồn tại

Lý do tại sao danh sách “số” được xác định bên dưới hàm là… không có lý do cụ thể nào. Thực tế phổ biến là xác định các chức năng của bạn ở đầu. py và dữ liệu bên dưới chúng, nhưng không bắt buộc. Điều duy nhất bắt buộc là dữ liệu và chức năng tồn tại khi bạn sử dụng chúng


li = [1,2,3,4,5,6,7,8,9,10]
 
eve_num = filter[lambda x: x%2==0, li]
 
print[eve_num] 
 
1

Hy vọng điều này sẽ giúp giải thích tại sao và khi nào phiên dịch viên sẽ thấy một cái tên thay vì phàn nàn rằng nó không tồn tại

Hãy quay lại mã này của bạn

dave


li = [1,2,3,4,5,6,7,8,9,10]
 
eve_num = filter[lambda x: x%2==0, li]
 
print[eve_num] 
 
2

Gợi ý cụ thể hơn

  • def get_evens[list_of_numbers]:
        list_of_evens = []
        for n in list_of_numbers:
            if n % 2 != 0:
                list_of_evens.append[n]
        return list_of_evens
    
    numbers = [2, 3, 4, 6, 8, 101, 103, 111, 120, 124]
    print[get_evens[numbers]]
    
    2 - Mục đích của tuyên bố này là gì? . Trên thực tế, bạn đang bỏ qua giá trị đối số được cung cấp cho hàm. Bạn cần phải làm việc với đối số nếu không nó không có ý nghĩa
  • def get_evens[list_of_numbers]:
        list_of_evens = []
        for n in list_of_numbers:
            if n % 2 != 0:
                list_of_evens.append[n]
        return list_of_evens
    
    numbers = [2, 3, 4, 6, 8, 101, 103, 111, 120, 124]
    print[get_evens[numbers]]
    
    4 - “Báo cáo in sẽ không hoạt động ở đây. ”
  • Hàm không trả về kết quả. Bạn cần sử dụng câu lệnh
    def get_evens[list_of_numbers]:
        list_of_evens = []
        for n in list_of_numbers:
            if n % 2 != 0:
                list_of_evens.append[n]
        return list_of_evens
    
    numbers = [2, 3, 4, 6, 8, 101, 103, 111, 120, 124]
    print[get_evens[numbers]]
    
    5 để làm điều đó. Bạn đã làm điều đó trong mã trước đó của mình. Tại sao lại bỏ rơi nó ở đây?

Tôi khuyên bạn nên đọc một chút về chức năng. Tôi nghĩ rằng thông tin bạn cần là ở đây

w3schools. com

Hàm Python

W3Schools cung cấp các hướng dẫn, tài liệu tham khảo và bài tập trực tuyến miễn phí bằng tất cả các ngôn ngữ chính của web. Bao gồm các chủ đề phổ biến như HTML, CSS, JavaScript, Python, SQL, Java và nhiều, nhiều chủ đề khác

Chủ Đề