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]]"
5def 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]]"
8Là 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ạiLý 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]
1Hy 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
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
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ĩadef 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. ”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]]
- Hàm không trả về kết quả. Bạn cần sử dụng câu lệnh
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?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]]
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
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