Hướng dẫn how do i prepare for python interview? - làm thế nào để tôi chuẩn bị cho cuộc phỏng vấn python?

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Phỏng vấn mã hóa Python: Mẹo & Thực tiễn tốt nhất This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Python Coding Interviews: Tips & Best Practices

Show

Bạn đã thực hiện nó qua cuộc gọi điện thoại với nhà tuyển dụng, và bây giờ là thời gian để cho thấy rằng bạn biết cách giải quyết vấn đề với mã thực tế. Cho dù đó là một bài tập hackerrank, một bài tập về nhà hoặc một cuộc phỏng vấn bảng trắng tại chỗ, đây là thời điểm của bạn để chứng minh các kỹ năng phỏng vấn mã hóa của bạn.

Nhưng các cuộc phỏng vấn không chỉ về việc giải quyết các vấn đề: Họ cũng cho thấy rằng bạn có thể viết mã sản xuất sạch. Điều này có nghĩa là bạn có kiến ​​thức sâu sắc về chức năng và thư viện tích hợp Python. Kiến thức này cho thấy các công ty rằng bạn có thể di chuyển nhanh chóng và giành được chức năng trùng lặp của người đi kèm với ngôn ngữ chỉ vì bạn không biết nó tồn tại.

Tại Real Python, chúng tôi đã đặt đầu của mình lại với nhau và thảo luận về những công cụ mà chúng tôi luôn luôn ấn tượng khi thấy trong các cuộc phỏng vấn mã hóa. Bài viết này sẽ hướng dẫn bạn qua các chức năng tốt nhất, bắt đầu với các bản dựng Python, sau đó hỗ trợ bản địa Python, cho các cấu trúc dữ liệu và cuối cùng là thư viện tiêu chuẩn mạnh mẽ (và thường được đánh giá thấp).

Trong bài viết này, bạn sẽ học cách:

  • Sử dụng
    >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers, start=52):
    ...     print(i, num)
    ...
    52 45
    53 22
    54 14
    55 65
    56 97
    57 72
    
    7 để lặp lại cả hai chỉ số và giá trị
  • Gỡ lỗi mã có vấn đề với
    >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers, start=52):
    ...     print(i, num)
    ...
    52 45
    53 22
    54 14
    55 65
    56 97
    57 72
    
    8
  • Chuỗi định dạng hiệu quả với dây F
  • Sắp xếp danh sách với các đối số tùy chỉnh
  • Sử dụng máy phát điện thay vì danh sách toàn diện để bảo tồn bộ nhớ
  • Xác định các giá trị mặc định khi tìm kiếm các khóa từ điển
  • Đếm các đối tượng có thể băm với lớp
    >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers, start=52):
    ...     print(i, num)
    ...
    52 45
    53 22
    54 14
    55 65
    56 97
    57 72
    
    9
  • Sử dụng thư viện tiêu chuẩn để có được danh sách các hoán vị và kết hợp

Chọn chức năng tích hợp phù hợp cho công việc

Python có một thư viện tiêu chuẩn lớn nhưng chỉ có một thư viện nhỏ gồm các chức năng tích hợp, luôn có sẵn và không cần phải nhập. Nó có giá trị vượt qua từng người, nhưng cho đến khi bạn có cơ hội làm như vậy, đây là một vài chức năng tích hợp đáng để hiểu cách sử dụng, và trong trường hợp của một số trong số chúng, thay vào đó là những lựa chọn thay thế nào.

Lặp với >>> numbers = [45, 22, 14, 65, 97, 72] >>> for i, num in enumerate(numbers, start=52): ... print(i, num) ... 52 45 53 22 54 14 55 65 56 97 57 72 7 thay vì >>> numbers = [4, 2, 1, 6, 9, 7] >>> def square(x): ... return x*x ... >>> list(map(square, numbers)) [16, 4, 1, 36, 81, 49] >>> [square(x) for x in numbers] [16, 4, 1, 36, 81, 49] 1

Kịch bản này có thể xuất hiện nhiều hơn bất kỳ cuộc phỏng vấn mã hóa nào khác: bạn có một danh sách các yếu tố và bạn cần lặp lại trong danh sách với quyền truy cập vào cả các chỉ số và giá trị.

Có một câu hỏi phỏng vấn mã hóa cổ điển có tên là FizzBuzz có thể được giải quyết bằng cách lặp lại cả các chỉ số và giá trị. Trong FizzBuzz, bạn được cung cấp một danh sách các số nguyên. Nhiệm vụ của bạn là làm như sau:

  1. Thay thế tất cả các số nguyên được chia đều cho
    >>> numbers = [4, 2, 1, 6, 9, 7]
    >>> def square(x):
    ...     return x*x
    ...
    >>> list(map(square, numbers))
    [16, 4, 1, 36, 81, 49]
    
    >>> [square(x) for x in numbers]
    [16, 4, 1, 36, 81, 49]
    
    2 bằng
    >>> numbers = [4, 2, 1, 6, 9, 7]
    >>> def square(x):
    ...     return x*x
    ...
    >>> list(map(square, numbers))
    [16, 4, 1, 36, 81, 49]
    
    >>> [square(x) for x in numbers]
    [16, 4, 1, 36, 81, 49]
    
    3
  2. Thay thế tất cả các số nguyên chia hết cho
    >>> numbers = [4, 2, 1, 6, 9, 7]
    >>> def square(x):
    ...     return x*x
    ...
    >>> list(map(square, numbers))
    [16, 4, 1, 36, 81, 49]
    
    >>> [square(x) for x in numbers]
    [16, 4, 1, 36, 81, 49]
    
    4 bằng
    >>> numbers = [4, 2, 1, 6, 9, 7]
    >>> def square(x):
    ...     return x*x
    ...
    >>> list(map(square, numbers))
    [16, 4, 1, 36, 81, 49]
    
    >>> [square(x) for x in numbers]
    [16, 4, 1, 36, 81, 49]
    
    5
  3. Thay thế tất cả các số nguyên chia hết cho cả
    >>> numbers = [4, 2, 1, 6, 9, 7]
    >>> def square(x):
    ...     return x*x
    ...
    >>> list(map(square, numbers))
    [16, 4, 1, 36, 81, 49]
    
    >>> [square(x) for x in numbers]
    [16, 4, 1, 36, 81, 49]
    
    2 và
    >>> numbers = [4, 2, 1, 6, 9, 7]
    >>> def square(x):
    ...     return x*x
    ...
    >>> list(map(square, numbers))
    [16, 4, 1, 36, 81, 49]
    
    >>> [square(x) for x in numbers]
    [16, 4, 1, 36, 81, 49]
    
    4 bằng
    >>> numbers = [4, 2, 1, 6, 9, 7]
    >>> def square(x):
    ...     return x*x
    ...
    >>> list(map(square, numbers))
    [16, 4, 1, 36, 81, 49]
    
    >>> [square(x) for x in numbers]
    [16, 4, 1, 36, 81, 49]
    
    8

Thông thường, các nhà phát triển sẽ giải quyết vấn đề này với

>>> numbers = [4, 2, 1, 6, 9, 7]
>>> def square(x):
...     return x*x
...
>>> list(map(square, numbers))
[16, 4, 1, 36, 81, 49]

>>> [square(x) for x in numbers]
[16, 4, 1, 36, 81, 49]
1:

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i in range(len(numbers)):
...     if numbers[i] % 3 == 0 and numbers[i] % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif numbers[i] % 3 == 0:
...         numbers[i] = 'fizz'
...     elif numbers[i] % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']

Phạm vi cho phép bạn truy cập các yếu tố của

>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]
0 theo chỉ mục và là một công cụ hữu ích cho một số tình huống. Nhưng trong trường hợp này, nơi bạn muốn nhận từng chỉ số và giá trị của phần tử cùng một lúc, một giải pháp thanh lịch hơn sử dụng
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
7:

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']

Phạm vi cho phép bạn truy cập các yếu tố của

>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]
0 theo chỉ mục và là một công cụ hữu ích cho một số tình huống. Nhưng trong trường hợp này, nơi bạn muốn nhận từng chỉ số và giá trị của phần tử cùng một lúc, một giải pháp thanh lịch hơn sử dụng
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
7:

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72

Phạm vi cho phép bạn truy cập các yếu tố của

>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]
0 theo chỉ mục và là một công cụ hữu ích cho một số tình huống. Nhưng trong trường hợp này, nơi bạn muốn nhận từng chỉ số và giá trị của phần tử cùng một lúc, một giải pháp thanh lịch hơn sử dụng
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
7:

Đối với mỗi phần tử, >>> numbers = [45, 22, 14, 65, 97, 72] >>> for i, num in enumerate(numbers, start=52): ... print(i, num) ... 52 45 53 22 54 14 55 65 56 97 57 72 7 trả về một bộ đếm và giá trị phần tử. Bộ đếm mặc định là >>> def is_odd(x): ... return bool(x % 2) ... >>> list(filter(is_odd, numbers)) [1, 9, 7] >>> [x for x in numbers if is_odd(x)] [1, 9, 7] 3, thuận tiện cũng là chỉ số phần tử. Bạn có muốn bắt đầu số lượng của bạn tại >>> def is_odd(x): ... return bool(x % 2) ... >>> list(filter(is_odd, numbers)) [1, 9, 7] >>> [x for x in numbers if is_odd(x)] [1, 9, 7] 3 không? Chỉ cần sử dụng tham số >>> def is_odd(x): ... return bool(x % 2) ... >>> list(filter(is_odd, numbers)) [1, 9, 7] >>> [x for x in numbers if is_odd(x)] [1, 9, 7] 5 tùy chọn để đặt phần bù:

Bằng cách sử dụng tham số

>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]
5, chúng tôi truy cập tất cả các phần tử giống nhau, bắt đầu với chỉ mục đầu tiên, nhưng bây giờ số lượng của chúng tôi bắt đầu từ giá trị số nguyên được chỉ định.

Sử dụng toàn bộ danh sách thay vì

>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]
7 và
>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]
8

Tôi nghĩ rằng Dropping Filter () và Map () khá không gây tranh cãi [.]

- Guido van Rossum, người tạo ra Python

>>>

>>> numbers = [4, 2, 1, 6, 9, 7]
>>> def square(x):
...     return x*x
...
>>> list(map(square, numbers))
[16, 4, 1, 36, 81, 49]

>>> [square(x) for x in numbers]
[16, 4, 1, 36, 81, 49]

Phạm vi cho phép bạn truy cập các yếu tố của

>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]
0 theo chỉ mục và là một công cụ hữu ích cho một số tình huống. Nhưng trong trường hợp này, nơi bạn muốn nhận từng chỉ số và giá trị của phần tử cùng một lúc, một giải pháp thanh lịch hơn sử dụng
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
7:

Đối với mỗi phần tử,

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
7 trả về một bộ đếm và giá trị phần tử. Bộ đếm mặc định là
>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]
3, thuận tiện cũng là chỉ số phần tử. Bạn có muốn bắt đầu số lượng của bạn tại
>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]
3 không? Chỉ cần sử dụng tham số
>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]
5 tùy chọn để đặt phần bù:

>>>

>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]

Phạm vi cho phép bạn truy cập các yếu tố của

>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]
0 theo chỉ mục và là một công cụ hữu ích cho một số tình huống. Nhưng trong trường hợp này, nơi bạn muốn nhận từng chỉ số và giá trị của phần tử cùng một lúc, một giải pháp thanh lịch hơn sử dụng
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
7:

Đối với mỗi phần tử,

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
7 trả về một bộ đếm và giá trị phần tử. Bộ đếm mặc định là
>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]
3, thuận tiện cũng là chỉ số phần tử. Bạn có muốn bắt đầu số lượng của bạn tại
>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]
3 không? Chỉ cần sử dụng tham số
>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]
5 tùy chọn để đặt phần bù:

Dù bằng cách nào, bạn sẽ hiếm khi đi sai bằng cách sử dụng toàn bộ danh sách trong một cuộc phỏng vấn mã hóa, vì nó sẽ truyền đạt rằng bạn biết những gì phổ biến nhất trong Python.

Gỡ lỗi với >>> numbers = [45, 22, 14, 65, 97, 72] >>> for i, num in enumerate(numbers, start=52): ... print(i, num) ... 52 45 53 22 54 14 55 65 56 97 57 72 8 thay vì import pdb; pdb.set_trace() 1

Bạn có thể đã gỡ lỗi một vấn đề nhỏ bằng cách thêm

import pdb; pdb.set_trace()
1 vào mã của bạn và xem những gì được in ra. Cách tiếp cận này hoạt động tốt lúc đầu nhưng nhanh chóng trở nên cồng kềnh. Ngoài ra, trong một cài đặt phỏng vấn mã hóa, bạn hầu như không muốn các cuộc gọi
import pdb; pdb.set_trace()
1 được tiêu hóa trong suốt mã của bạn.

Thay vào đó, bạn nên sử dụng một trình gỡ lỗi. Đối với các lỗi không tầm thường, nó hầu như luôn nhanh hơn so với sử dụng

import pdb; pdb.set_trace()
1 và cho rằng gỡ lỗi là một phần lớn của phần mềm viết, nó cho thấy bạn biết cách sử dụng các công cụ cho phép bạn phát triển nhanh chóng trong công việc.

Nếu bạn sử dụng Python 3.7, bạn không cần nhập bất cứ thứ gì và chỉ có thể gọi

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
8 tại vị trí trong mã của bạn nơi bạn muốn ghé vào trình gỡ lỗi:

# Some complicated code with bugs

breakpoint()

Gọi

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
8 sẽ đưa bạn vào
import pdb; pdb.set_trace()
7, đây là trình gỡ lỗi Python mặc định. Trên Python 3.6 trở lên, bạn có thể làm tương tự bằng cách nhập
import pdb; pdb.set_trace()
7 một cách rõ ràng:

import pdb; pdb.set_trace()

Giống như

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
8,
>>> def get_name_and_decades(name, age):
...     return f"My name is {name} and I'm {age / 10:.5f} decades old."
...
>>> get_name_and_decades("Maria", 31)
My name is Maria and I'm 3.10000 decades old.
0 sẽ đưa bạn vào trình gỡ lỗi
import pdb; pdb.set_trace()
7. Nó không hoàn toàn sạch sẽ và là một chút đáng nhớ.

Có những người gỡ lỗi khác có sẵn mà bạn có thể muốn thử, nhưng

import pdb; pdb.set_trace()
7 là một phần của thư viện tiêu chuẩn, do đó, nó luôn luôn có sẵn. Bất kể trình gỡ lỗi nào bạn thích, nó cũng đáng để thử chúng để làm quen với quy trình làm việc trước khi bạn ở trong một cài đặt phỏng vấn mã hóa.

Chuỗi định dạng với dây F

Python có rất nhiều cách khác nhau để xử lý định dạng chuỗi và có thể rất khó để biết nên sử dụng những gì. Trên thực tế, chúng tôi giải quyết định dạng theo chiều sâu trong hai bài viết riêng biệt: một về định dạng chuỗi nói chung và một bài tập cụ thể tập trung vào các chuỗi F. Trong một cuộc phỏng vấn mã hóa, nơi bạn (hy vọng) sử dụng Python 3.6+, phương pháp định dạng được đề xuất là các chuỗi F F.

F-Strings hỗ trợ Sử dụng ngôn ngữ Mini định dạng chuỗi, cũng như phép nội suy chuỗi mạnh mẽ. Các tính năng này cho phép bạn thêm các biến hoặc thậm chí các biểu thức python hợp lệ và đã đánh giá chúng trong thời gian chạy trước khi được thêm vào chuỗi:

>>>

>>> def get_name_and_decades(name, age):
...     return f"My name is {name} and I'm {age / 10:.5f} decades old."
...
>>> get_name_and_decades("Maria", 31)
My name is Maria and I'm 3.10000 decades old.

Chuỗi F cho phép bạn đặt

>>> def get_name_and_decades(name, age):
...     return f"My name is {name} and I'm {age / 10:.5f} decades old."
...
>>> get_name_and_decades("Maria", 31)
My name is Maria and I'm 3.10000 decades old.
3 vào chuỗi và thêm tuổi của cô ấy với định dạng mong muốn trong một hoạt động cô đọng.

Một rủi ro cần nhận thức được là nếu bạn xuất ra các giá trị do người dùng tạo, thì điều đó có thể gây ra rủi ro bảo mật, trong trường hợp đó, chuỗi mẫu có thể là một tùy chọn an toàn hơn.

Sắp xếp danh sách phức tạp với >>> def get_name_and_decades(name, age): ... return f"My name is {name} and I'm {age / 10:.5f} decades old." ... >>> get_name_and_decades("Maria", 31) My name is Maria and I'm 3.10000 decades old. 4

Rất nhiều câu hỏi phỏng vấn mã hóa yêu cầu một số loại sắp xếp, và có nhiều cách hợp lệ bạn có thể sắp xếp các mục. Trừ khi người phỏng vấn muốn bạn thực hiện thuật toán sắp xếp của riêng mình, thì nó thường tốt nhất để sử dụng

>>> def get_name_and_decades(name, age):
...     return f"My name is {name} and I'm {age / 10:.5f} decades old."
...
>>> get_name_and_decades("Maria", 31)
My name is Maria and I'm 3.10000 decades old.
4.

Bạn có thể thấy những cách sử dụng đơn giản nhất của việc sắp xếp, chẳng hạn như sắp xếp danh sách các số hoặc chuỗi theo thứ tự tăng dần hoặc giảm dần:

>>>

>>> sorted([6,5,3,7,2,4,1])
[1, 2, 3, 4, 5, 6, 7]

>>> sorted(['cat', 'dog', 'cheetah', 'rhino', 'bear'], reverse=True)
['rhino', 'dog', 'cheetah', 'cat', 'bear]

Chuỗi F cho phép bạn đặt

>>> def get_name_and_decades(name, age):
...     return f"My name is {name} and I'm {age / 10:.5f} decades old."
...
>>> get_name_and_decades("Maria", 31)
My name is Maria and I'm 3.10000 decades old.
3 vào chuỗi và thêm tuổi của cô ấy với định dạng mong muốn trong một hoạt động cô đọng.

Một rủi ro cần nhận thức được là nếu bạn xuất ra các giá trị do người dùng tạo, thì điều đó có thể gây ra rủi ro bảo mật, trong trường hợp đó, chuỗi mẫu có thể là một tùy chọn an toàn hơn.

>>>

>>> animals = [
...     {'type': 'penguin', 'name': 'Stephanie', 'age': 8},
...     {'type': 'elephant', 'name': 'Devon', 'age': 3},
...     {'type': 'puma', 'name': 'Moe', 'age': 5},
... ]
>>> sorted(animals, key=lambda animal: animal['age'])
[
    {'type': 'elephant', 'name': 'Devon', 'age': 3},
    {'type': 'puma', 'name': 'Moe', 'age': 5},
    {'type': 'penguin', 'name': 'Stephanie, 'age': 8},
]

Chuỗi F cho phép bạn đặt

>>> def get_name_and_decades(name, age):
...     return f"My name is {name} and I'm {age / 10:.5f} decades old."
...
>>> get_name_and_decades("Maria", 31)
My name is Maria and I'm 3.10000 decades old.
3 vào chuỗi và thêm tuổi của cô ấy với định dạng mong muốn trong một hoạt động cô đọng.

Một rủi ro cần nhận thức được là nếu bạn xuất ra các giá trị do người dùng tạo, thì điều đó có thể gây ra rủi ro bảo mật, trong trường hợp đó, chuỗi mẫu có thể là một tùy chọn an toàn hơn.

Sắp xếp danh sách phức tạp với

>>> def get_name_and_decades(name, age):
...     return f"My name is {name} and I'm {age / 10:.5f} decades old."
...
>>> get_name_and_decades("Maria", 31)
My name is Maria and I'm 3.10000 decades old.
4

Rất nhiều câu hỏi phỏng vấn mã hóa yêu cầu một số loại sắp xếp, và có nhiều cách hợp lệ bạn có thể sắp xếp các mục. Trừ khi người phỏng vấn muốn bạn thực hiện thuật toán sắp xếp của riêng mình, thì nó thường tốt nhất để sử dụng

>>> def get_name_and_decades(name, age):
...     return f"My name is {name} and I'm {age / 10:.5f} decades old."
...
>>> get_name_and_decades("Maria", 31)
My name is Maria and I'm 3.10000 decades old.
4.

Bạn có thể thấy những cách sử dụng đơn giản nhất của việc sắp xếp, chẳng hạn như sắp xếp danh sách các số hoặc chuỗi theo thứ tự tăng dần hoặc giảm dần:

Theo mặc định,

>>> def get_name_and_decades(name, age):
...     return f"My name is {name} and I'm {age / 10:.5f} decades old."
...
>>> get_name_and_decades("Maria", 31)
My name is Maria and I'm 3.10000 decades old.
4 đã sắp xếp đầu vào theo thứ tự tăng dần và đối số từ khóa
>>> def get_name_and_decades(name, age):
...     return f"My name is {name} and I'm {age / 10:.5f} decades old."
...
>>> get_name_and_decades("Maria", 31)
My name is Maria and I'm 3.10000 decades old.
7 khiến nó sắp xếp theo thứ tự giảm dần.

Nó rất đáng để biết về đối số từ khóa tùy chọn

>>> def get_name_and_decades(name, age):
...     return f"My name is {name} and I'm {age / 10:.5f} decades old."
...
>>> get_name_and_decades("Maria", 31)
My name is Maria and I'm 3.10000 decades old.
8 cho phép bạn chỉ định một hàm sẽ được gọi trên mọi yếu tố trước khi sắp xếp. Thêm một chức năng cho phép các quy tắc sắp xếp tùy chỉnh, đặc biệt hữu ích nếu bạn muốn sắp xếp các loại dữ liệu phức tạp hơn:

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
0

Chuỗi F cho phép bạn đặt

>>> def get_name_and_decades(name, age):
...     return f"My name is {name} and I'm {age / 10:.5f} decades old."
...
>>> get_name_and_decades("Maria", 31)
My name is Maria and I'm 3.10000 decades old.
3 vào chuỗi và thêm tuổi của cô ấy với định dạng mong muốn trong một hoạt động cô đọng.

Cách tiếp cận xấu

>>> sorted([6,5,3,7,2,4,1])
[1, 2, 3, 4, 5, 6, 7]

>>> sorted(['cat', 'dog', 'cheetah', 'rhino', 'bear'], reverse=True)
['rhino', 'dog', 'cheetah', 'cat', 'bear]
1 lưu trữ các giá trị trong danh sách sau đó chuyển đổi danh sách thành một tập hợp:

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
1

Cách tiếp cận này không phải là khủng khiếp, nhưng nó không cần thiết tạo ra một danh sách và sau đó chuyển đổi nó thành một bộ. Người phỏng vấn hầu như luôn luôn chú ý (và hỏi về) loại lựa chọn thiết kế này.

Cách tiếp cận tồi tệ hơn

Để tránh chuyển đổi từ danh sách sang một bộ, giờ đây bạn lưu trữ các giá trị trong danh sách mà không cần sử dụng bất kỳ cấu trúc dữ liệu nào khác. Sau đó, bạn kiểm tra tính độc đáo bằng cách so sánh các giá trị mới với tất cả các yếu tố hiện tại trong danh sách:

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
2

Cách tiếp cận này không phải là khủng khiếp, nhưng nó không cần thiết tạo ra một danh sách và sau đó chuyển đổi nó thành một bộ. Người phỏng vấn hầu như luôn luôn chú ý (và hỏi về) loại lựa chọn thiết kế này.

Cách tiếp cận tồi tệ hơn

Để tránh chuyển đổi từ danh sách sang một bộ, giờ đây bạn lưu trữ các giá trị trong danh sách mà không cần sử dụng bất kỳ cấu trúc dữ liệu nào khác. Sau đó, bạn kiểm tra tính độc đáo bằng cách so sánh các giá trị mới với tất cả các yếu tố hiện tại trong danh sách:

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
3

Cách tiếp cận này không phải là khủng khiếp, nhưng nó không cần thiết tạo ra một danh sách và sau đó chuyển đổi nó thành một bộ. Người phỏng vấn hầu như luôn luôn chú ý (và hỏi về) loại lựa chọn thiết kế này.

Cách tiếp cận tồi tệ hơn

Để tránh chuyển đổi từ danh sách sang một bộ, giờ đây bạn lưu trữ các giá trị trong danh sách mà không cần sử dụng bất kỳ cấu trúc dữ liệu nào khác. Sau đó, bạn kiểm tra tính độc đáo bằng cách so sánh các giá trị mới với tất cả các yếu tố hiện tại trong danh sách:

Điều này tồi tệ hơn cách tiếp cận đầu tiên, bởi vì bạn phải so sánh mọi từ mới với mọi từ đã có trong danh sách. Điều đó có nghĩa là khi số lượng từ tăng lên, số lượng tra cứu tăng lên bậc hai. Nói cách khác, độ phức tạp thời gian phát triển theo thứ tự của O (N²).

Cách tiếp cận tốt

Bây giờ, bạn bỏ qua bằng cách sử dụng danh sách hoàn toàn và thay vào đó sử dụng một tập hợp từ đầu:

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
4

Cách tiếp cận này không phải là khủng khiếp, nhưng nó không cần thiết tạo ra một danh sách và sau đó chuyển đổi nó thành một bộ. Người phỏng vấn hầu như luôn luôn chú ý (và hỏi về) loại lựa chọn thiết kế này.

Cách tiếp cận tồi tệ hơn

Để tránh chuyển đổi từ danh sách sang một bộ, giờ đây bạn lưu trữ các giá trị trong danh sách mà không cần sử dụng bất kỳ cấu trúc dữ liệu nào khác. Sau đó, bạn kiểm tra tính độc đáo bằng cách so sánh các giá trị mới với tất cả các yếu tố hiện tại trong danh sách:

Điều này tồi tệ hơn cách tiếp cận đầu tiên, bởi vì bạn phải so sánh mọi từ mới với mọi từ đã có trong danh sách. Điều đó có nghĩa là khi số lượng từ tăng lên, số lượng tra cứu tăng lên bậc hai. Nói cách khác, độ phức tạp thời gian phát triển theo thứ tự của O (N²).

Cách tiếp cận tốt

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
5

Bây giờ, bạn bỏ qua bằng cách sử dụng danh sách hoàn toàn và thay vào đó sử dụng một tập hợp từ đầu:

Điều này có thể không khác nhiều so với các phương pháp khác ngoại trừ việc sử dụng một bộ từ đầu. Nếu bạn xem xét những gì xảy ra trong

>>> sorted([6,5,3,7,2,4,1])
[1, 2, 3, 4, 5, 6, 7]

>>> sorted(['cat', 'dog', 'cheetah', 'rhino', 'bear'], reverse=True)
['rhino', 'dog', 'cheetah', 'cat', 'bear]
2, nó thậm chí còn có vẻ như là cách tiếp cận thứ hai: Nhận từ này, hãy kiểm tra xem nó có trong tập hợp không và nếu không, hãy thêm nó vào cấu trúc dữ liệu.

Vậy tại sao việc sử dụng một bộ khác với phương pháp thứ hai?

Nó khác nhau bởi vì các tập hợp các phần tử lưu trữ theo cách cho phép kiểm tra thời gian gần liên tục cho dù giá trị có nằm trong tập hợp hay không, không giống như danh sách, yêu cầu tra cứu thời gian tuyến tính. Sự khác biệt về thời gian tra cứu có nghĩa là độ phức tạp về thời gian để thêm vào một tập hợp tăng lên với tốc độ O (n), tốt hơn nhiều so với O (N²) từ cách tiếp cận thứ hai trong hầu hết các trường hợp.

Lưu bộ nhớ với máy phát điện

Danh sách toàn diện là các công cụ thuận tiện nhưng đôi khi có thể dẫn đến việc sử dụng bộ nhớ không cần thiết.

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
6

Hãy tưởng tượng bạn đã được yêu cầu tìm tổng số 1000 hình vuông hoàn hảo đầu tiên, bắt đầu với 1. Bạn biết về các toàn bộ danh sách, vì vậy bạn nhanh chóng mã hóa một giải pháp làm việc:

Giải pháp của bạn làm cho một danh sách của mọi hình vuông hoàn hảo trong khoảng từ 1 đến 1.000.000 và tổng các giá trị. Mã của bạn trả về câu trả lời đúng, nhưng sau đó người phỏng vấn của bạn bắt đầu tăng số lượng hình vuông hoàn hảo bạn cần tổng hợp.

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
7

Lúc đầu, chức năng của bạn tiếp tục bật ra câu trả lời đúng, nhưng chẳng mấy chốc nó bắt đầu chậm lại cho đến khi cuối cùng quá trình dường như bị treo mãi mãi. Đây là điều cuối cùng bạn muốn xảy ra trong một cuộc phỏng vấn mã hóa.

Nhưng điều gì sẽ xảy ra nếu bạn muốn cập nhật từ điển với giá trị mặc định trong khi vẫn truy cập khóa

>>> animals = [
...     {'type': 'penguin', 'name': 'Stephanie', 'age': 8},
...     {'type': 'elephant', 'name': 'Devon', 'age': 3},
...     {'type': 'puma', 'name': 'Moe', 'age': 5},
... ]
>>> sorted(animals, key=lambda animal: animal['age'])
[
    {'type': 'elephant', 'name': 'Devon', 'age': 3},
    {'type': 'puma', 'name': 'Moe', 'age': 5},
    {'type': 'penguin', 'name': 'Stephanie, 'age': 8},
]
4?
>>> animals = [
...     {'type': 'penguin', 'name': 'Stephanie', 'age': 8},
...     {'type': 'elephant', 'name': 'Devon', 'age': 3},
...     {'type': 'puma', 'name': 'Moe', 'age': 5},
... ]
>>> sorted(animals, key=lambda animal: animal['age'])
[
    {'type': 'elephant', 'name': 'Devon', 'age': 3},
    {'type': 'puma', 'name': 'Moe', 'age': 5},
    {'type': 'penguin', 'name': 'Stephanie, 'age': 8},
]
1 không thực sự giúp bạn ở đây, vì vậy bạn đã rời đi với việc kiểm tra rõ ràng giá trị một lần nữa:

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
8

Kiểm tra giá trị và thiết lập mặc định là một cách tiếp cận hợp lệ và dễ đọc, nhưng một lần nữa, Python cung cấp một phương thức thanh lịch hơn với

>>> animals = [
...     {'type': 'penguin', 'name': 'Stephanie', 'age': 8},
...     {'type': 'elephant', 'name': 'Devon', 'age': 3},
...     {'type': 'puma', 'name': 'Moe', 'age': 5},
... ]
>>> sorted(animals, key=lambda animal: animal['age'])
[
    {'type': 'elephant', 'name': 'Devon', 'age': 3},
    {'type': 'puma', 'name': 'Moe', 'age': 5},
    {'type': 'penguin', 'name': 'Stephanie, 'age': 8},
]
2:

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
9

Kiểm tra giá trị và thiết lập mặc định là một cách tiếp cận hợp lệ và dễ đọc, nhưng một lần nữa, Python cung cấp một phương thức thanh lịch hơn với

>>> animals = [
...     {'type': 'penguin', 'name': 'Stephanie', 'age': 8},
...     {'type': 'elephant', 'name': 'Devon', 'age': 3},
...     {'type': 'puma', 'name': 'Moe', 'age': 5},
... ]
>>> sorted(animals, key=lambda animal: animal['age'])
[
    {'type': 'elephant', 'name': 'Devon', 'age': 3},
    {'type': 'puma', 'name': 'Moe', 'age': 5},
    {'type': 'penguin', 'name': 'Stephanie, 'age': 8},
]
2:

>>> animals = [ ... {'type': 'penguin', 'name': 'Stephanie', 'age': 8}, ... {'type': 'elephant', 'name': 'Devon', 'age': 3}, ... {'type': 'puma', 'name': 'Moe', 'age': 5}, ... ] >>> sorted(animals, key=lambda animal: animal['age']) [ {'type': 'elephant', 'name': 'Devon', 'age': 3}, {'type': 'puma', 'name': 'Moe', 'age': 5}, {'type': 'penguin', 'name': 'Stephanie, 'age': 8}, ] 2 hoàn thành chính xác điều tương tự như đoạn trích ở trên. Nó kiểm tra xem >>> animals = [ ... {'type': 'penguin', 'name': 'Stephanie', 'age': 8}, ... {'type': 'elephant', 'name': 'Devon', 'age': 3}, ... {'type': 'puma', 'name': 'Moe', 'age': 5}, ... ] >>> sorted(animals, key=lambda animal: animal['age']) [ {'type': 'elephant', 'name': 'Devon', 'age': 3}, {'type': 'puma', 'name': 'Moe', 'age': 5}, {'type': 'penguin', 'name': 'Stephanie, 'age': 8}, ] 4 có tồn tại trong >>> animals = [ ... {'type': 'penguin', 'name': 'Stephanie', 'age': 8}, ... {'type': 'elephant', 'name': 'Devon', 'age': 3}, ... {'type': 'puma', 'name': 'Moe', 'age': 5}, ... ] >>> sorted(animals, key=lambda animal: animal['age']) [ {'type': 'elephant', 'name': 'Devon', 'age': 3}, {'type': 'puma', 'name': 'Moe', 'age': 5}, {'type': 'penguin', 'name': 'Stephanie, 'age': 8}, ] 3 không và nếu vậy nó trả về giá trị đó. Mặt khác, nó đặt >>> numbers = [45, 22, 14, 65, 97, 72] >>> for i, num in enumerate(numbers): ... if num % 3 == 0 and num % 5 == 0: ... numbers[i] = 'fizzbuzz' ... elif num % 3 == 0: ... numbers[i] = 'fizz' ... elif num % 5 == 0: ... numbers[i] = 'buzz' ... >>> numbers ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz'] 03 thành >>> numbers = [45, 22, 14, 65, 97, 72] >>> for i, num in enumerate(numbers): ... if num % 3 == 0 and num % 5 == 0: ... numbers[i] = 'fizzbuzz' ... elif num % 3 == 0: ... numbers[i] = 'fizz' ... elif num % 5 == 0: ... numbers[i] = 'buzz' ... >>> numbers ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz'] 04 và trả về giá trị mới.

Tận dụng thư viện tiêu chuẩn Python

Theo mặc định, Python đi kèm với rất nhiều chức năng mà chỉ là một tuyên bố ____105. Nó rất mạnh mẽ, nhưng biết cách tận dụng thư viện tiêu chuẩn có thể tăng cường kỹ năng phỏng vấn mã hóa của bạn.

Nó khó có thể chọn các phần hữu ích nhất từ ​​tất cả các mô -đun có sẵn, vì vậy phần này sẽ tập trung vào một tập hợp con nhỏ của các chức năng tiện ích của nó. Hy vọng rằng, những điều này sẽ chứng minh hữu ích cho bạn trong các cuộc phỏng vấn mã hóa và cũng có sự thèm ăn của bạn để tìm hiểu thêm về chức năng nâng cao của các mô -đun này và các mô -đun khác.

Xử lý các phím từ điển bị thiếu với

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
06

>>> animals = [
...     {'type': 'penguin', 'name': 'Stephanie', 'age': 8},
...     {'type': 'elephant', 'name': 'Devon', 'age': 3},
...     {'type': 'puma', 'name': 'Moe', 'age': 5},
... ]
>>> sorted(animals, key=lambda animal: animal['age'])
[
    {'type': 'elephant', 'name': 'Devon', 'age': 3},
    {'type': 'puma', 'name': 'Moe', 'age': 5},
    {'type': 'penguin', 'name': 'Stephanie, 'age': 8},
]
1 và
>>> animals = [
...     {'type': 'penguin', 'name': 'Stephanie', 'age': 8},
...     {'type': 'elephant', 'name': 'Devon', 'age': 3},
...     {'type': 'puma', 'name': 'Moe', 'age': 5},
... ]
>>> sorted(animals, key=lambda animal: animal['age'])
[
    {'type': 'elephant', 'name': 'Devon', 'age': 3},
    {'type': 'puma', 'name': 'Moe', 'age': 5},
    {'type': 'penguin', 'name': 'Stephanie, 'age': 8},
]
2 hoạt động tốt khi bạn thiết lập mặc định cho một khóa duy nhất, nhưng nó phổ biến là muốn có giá trị mặc định cho tất cả các khóa không đặt có thể, đặc biệt là khi lập trình trong bối cảnh phỏng vấn mã hóa.

Giả vờ bạn có một nhóm sinh viên, và bạn cần theo dõi điểm số của họ trong bài tập về nhà. Giá trị đầu vào là một danh sách các bộ dữ liệu có định dạng

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
09, nhưng bạn muốn dễ dàng tra cứu tất cả các lớp cho một học sinh mà không cần lặp lại danh sách.

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
0

Một cách để lưu trữ dữ liệu lớp sử dụng từ điển ánh xạ tên học sinh vào danh sách các lớp:

Trong cách tiếp cận này, bạn lặp lại các sinh viên và kiểm tra xem tên của họ đã có thuộc tính trong từ điển. Nếu không, bạn thêm chúng vào từ điển với một danh sách trống làm giá trị mặc định. Sau đó, bạn nối các điểm thực tế của họ vào danh sách các lớp học sinh đó.

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
1

Nhưng có một cách tiếp cận thậm chí còn sạch hơn sử dụng

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
10, giúp mở rộng chức năng
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
11 tiêu chuẩn để cho phép bạn đặt giá trị mặc định sẽ được vận hành nếu khóa không tồn tại:

Trong trường hợp này, bạn đã tạo ra một

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
10 sử dụng hàm tạo
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
13 mà không có đối số nào làm phương thức nhà máy mặc định.
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
13 Không có đối số trả về một danh sách trống, do đó,
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
10 gọi
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
13 nếu tên không tồn tại và sau đó cho phép cấp độ được thêm vào. Nếu bạn muốn có được ưa thích, bạn cũng có thể sử dụng chức năng Lambda làm giá trị nhà máy của bạn để trả về một hằng số tùy ý.

Tận dụng >>> numbers = [45, 22, 14, 65, 97, 72] >>> for i, num in enumerate(numbers): ... if num % 3 == 0 and num % 5 == 0: ... numbers[i] = 'fizzbuzz' ... elif num % 3 == 0: ... numbers[i] = 'fizz' ... elif num % 5 == 0: ... numbers[i] = 'buzz' ... >>> numbers ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz'] 10 có thể dẫn đến mã ứng dụng sạch hơn vì bạn không phải lo lắng về các giá trị mặc định ở cấp độ khóa. Thay vào đó, bạn có thể xử lý chúng một lần ở cấp độ >>> numbers = [45, 22, 14, 65, 97, 72] >>> for i, num in enumerate(numbers): ... if num % 3 == 0 and num % 5 == 0: ... numbers[i] = 'fizzbuzz' ... elif num % 3 == 0: ... numbers[i] = 'fizz' ... elif num % 5 == 0: ... numbers[i] = 'buzz' ... >>> numbers ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz'] 10 và sau đó hoạt động như thể khóa luôn luôn có mặt. Để biết thêm thông tin về kỹ thuật này, hãy xem bằng cách sử dụng loại Python DefaultDICT để xử lý các khóa bị thiếu.

Đếm các đối tượng có thể băm với

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
9

Bạn có một chuỗi dài các từ không có dấu câu hoặc chữ in hoa và bạn muốn đếm số lần mỗi từ xuất hiện.

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
2

Bạn có thể sử dụng từ điển hoặc

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
10 và tăng số lượng, nhưng
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
9 cung cấp một cách sạch hơn và thuận tiện hơn để làm chính xác điều đó. Bộ đếm là một lớp con của
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
11 sử dụng
>>> def is_odd(x):
...    return bool(x % 2)
...
>>> list(filter(is_odd, numbers))
[1, 9, 7]

>>> [x for x in numbers if is_odd(x)]
[1, 9, 7]
3 làm giá trị mặc định cho bất kỳ phần tử bị thiếu nào và giúp việc đếm các đối tượng dễ dàng hơn:

Khi bạn chuyển trong danh sách các từ cho

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
24, nó sẽ lưu trữ từng từ cùng với số lượng từ đó xảy ra trong danh sách.

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
3

Bạn có tò mò hai từ phổ biến nhất là gì? Chỉ cần sử dụng

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
25:

>>> numbers = [45, 22, 14, 65, 97, 72] >>> for i, num in enumerate(numbers): ... if num % 3 == 0 and num % 5 == 0: ... numbers[i] = 'fizzbuzz' ... elif num % 3 == 0: ... numbers[i] = 'fizz' ... elif num % 5 == 0: ... numbers[i] = 'buzz' ... >>> numbers ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz'] 25 là một phương thức tiện lợi và chỉ cần trả về các đầu vào thường xuyên nhất của ____127 theo số lượng.

Truy cập các nhóm chuỗi chung với hằng số

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
28

Thời gian đố của nó!

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
29 có đúng hay sai không?

Nó sai, vì mã ASCII cho

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
30 là 65, nhưng
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
31 là 97 và 65 không lớn hơn 97.

Tại sao câu trả lời quan trọng? Bởi vì nếu bạn muốn kiểm tra xem một nhân vật có phải là một phần của bảng chữ cái tiếng Anh hay không, một cách phổ biến là xem liệu nó có giữa

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
30 và
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
33 (65 và 122 trên biểu đồ ASCII).

Bạn có thể thấy một người được sử dụng trong

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
35, trả về xem tất cả các ký tự trong một chuỗi là chữ cái viết hoa:

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
4

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
35 lặp lại các chữ cái trong
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
37 và kiểm tra xem các chữ cái có phải là một phần của
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
38 không. Nếu bạn in ra
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
38, bạn sẽ thấy rằng nó chỉ là một chuỗi thấp. Giá trị được đặt thành nghĩa đen
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
40.

Tất cả các hằng số

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
28 chỉ là các chuỗi của các giá trị chuỗi được tham chiếu thường xuyên. Họ bao gồm những điều sau:

  • >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    42
  • >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    38
  • >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    44
  • >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    45
  • >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    46
  • >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    47
  • >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    48
  • >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    49
  • >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    50

Chúng dễ sử dụng hơn và, thậm chí quan trọng hơn, dễ đọc hơn.

Tạo hoán vị và kết hợp với >>> numbers = [45, 22, 14, 65, 97, 72] >>> for i, num in enumerate(numbers): ... if num % 3 == 0 and num % 5 == 0: ... numbers[i] = 'fizzbuzz' ... elif num % 3 == 0: ... numbers[i] = 'fizz' ... elif num % 5 == 0: ... numbers[i] = 'buzz' ... >>> numbers ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz'] 51

Những người phỏng vấn thích đưa ra các kịch bản thực tế để làm cho các cuộc phỏng vấn mã hóa có vẻ ít đáng sợ hơn, vì vậy, đây là một ví dụ giả tạo: Bạn đến một công viên giải trí và quyết định tìm ra mọi người bạn có thể ngồi cùng nhau trên tàu lượn siêu tốc.

Trừ khi việc tạo ra các cặp này là mục đích chính của câu hỏi phỏng vấn, nó có khả năng tạo ra tất cả các cặp có thể chỉ là một bước tẻ nhạt trên đường hướng tới một thuật toán hoạt động. Bạn có thể tự mình tính toán chúng bằng những vòng lặp lồng nhau hoặc bạn có thể sử dụng thư viện

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
51 mạnh mẽ.

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
51 có nhiều công cụ để tạo ra các chuỗi dữ liệu đầu vào, nhưng ngay bây giờ chúng tôi sẽ chỉ tập trung vào hai chức năng phổ biến:
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
54 và
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
55.

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
54 xây dựng danh sách tất cả các hoán vị, có nghĩa là nó là một danh sách của mọi nhóm các giá trị đầu vào có thể với độ dài phù hợp với tham số
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
57. Đối số từ khóa
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
58 cho phép chúng tôi chỉ định có bao nhiêu giá trị trong mỗi nhóm:

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
5

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
35 lặp lại các chữ cái trong
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
37 và kiểm tra xem các chữ cái có phải là một phần của
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
38 không. Nếu bạn in ra
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
38, bạn sẽ thấy rằng nó chỉ là một chuỗi thấp. Giá trị được đặt thành nghĩa đen
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
40.

Tất cả các hằng số

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
28 chỉ là các chuỗi của các giá trị chuỗi được tham chiếu thường xuyên. Họ bao gồm những điều sau:

>>>

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers, start=52):
...     print(i, num)
...
52 45
53 22
54 14
55 65
56 97
57 72
6

Chúng dễ sử dụng hơn và, thậm chí quan trọng hơn, dễ đọc hơn.

Tạo hoán vị và kết hợp với

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
51

Những người phỏng vấn thích đưa ra các kịch bản thực tế để làm cho các cuộc phỏng vấn mã hóa có vẻ ít đáng sợ hơn, vì vậy, đây là một ví dụ giả tạo: Bạn đến một công viên giải trí và quyết định tìm ra mọi người bạn có thể ngồi cùng nhau trên tàu lượn siêu tốc.

Trừ khi việc tạo ra các cặp này là mục đích chính của câu hỏi phỏng vấn, nó có khả năng tạo ra tất cả các cặp có thể chỉ là một bước tẻ nhạt trên đường hướng tới một thuật toán hoạt động. Bạn có thể tự mình tính toán chúng bằng những vòng lặp lồng nhau hoặc bạn có thể sử dụng thư viện

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
51 mạnh mẽ.

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
51 có nhiều công cụ để tạo ra các chuỗi dữ liệu đầu vào, nhưng ngay bây giờ chúng tôi sẽ chỉ tập trung vào hai chức năng phổ biến:
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
54 và
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
55.

  • >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    54 xây dựng danh sách tất cả các hoán vị, có nghĩa là nó là một danh sách của mọi nhóm các giá trị đầu vào có thể với độ dài phù hợp với tham số
    >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    57. Đối số từ khóa
    >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    58 cho phép chúng tôi chỉ định có bao nhiêu giá trị trong mỗi nhóm:
  • Với các hoán vị, thứ tự của các yếu tố quan trọng, do đó
    >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    59 đại diện cho một cặp khác với
    >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    60, có nghĩa là cả hai sẽ được đưa vào danh sách.
  • >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    55 Xây dựng kết hợp. Đây cũng là các nhóm có thể của các giá trị đầu vào, nhưng bây giờ thứ tự của các giá trị không quan trọng. Bởi vì
    >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    59 và
    >>> numbers = [45, 22, 14, 65, 97, 72]
    >>> for i, num in enumerate(numbers):
    ...     if num % 3 == 0 and num % 5 == 0:
    ...         numbers[i] = 'fizzbuzz'
    ...     elif num % 3 == 0:
    ...         numbers[i] = 'fizz'
    ...     elif num % 5 == 0:
    ...         numbers[i] = 'buzz'
    ...
    >>> numbers
    ['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
    
    60 đại diện cho cùng một cặp, chỉ một trong số chúng sẽ được đưa vào danh sách đầu ra:

Vì thứ tự của các giá trị không quan trọng với các kết hợp, nên có ít kết hợp hơn so với hoán vị cho cùng một danh sách đầu vào. Một lần nữa, vì chúng tôi đặt

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
58 thành 2, mỗi nhóm có hai tên trong đó.

>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
65 và
>>> numbers = [45, 22, 14, 65, 97, 72]
>>> for i, num in enumerate(numbers):
...     if num % 3 == 0 and num % 5 == 0:
...         numbers[i] = 'fizzbuzz'
...     elif num % 3 == 0:
...         numbers[i] = 'fizz'
...     elif num % 5 == 0:
...         numbers[i] = 'buzz'
...
>>> numbers
['fizzbuzz', 22, 14, 'buzz', 97, 'fizz']
66 chỉ là những ví dụ nhỏ về một thư viện mạnh mẽ, nhưng ngay cả hai chức năng này cũng có thể khá hữu ích khi bạn đang cố gắng giải quyết vấn đề thuật toán một cách nhanh chóng. This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Python Coding Interviews: Tips & Best Practices

Tôi nên học gì cho cuộc phỏng vấn Python?

Ace cuộc phỏng vấn mã hóa Python của bạn..
Khóa học. Phỏng vấn mã hóa Python: Mẹo & Thực tiễn tốt nhất. ....
Khóa học. Giới thiệu về các thuật toán sắp xếp trong Python. ....
Khóa học. Tạo một tìm kiếm nhị phân trong Python. ....
Hướng dẫn. Vấn đề thực hành Python: Hãy sẵn sàng cho cuộc phỏng vấn tiếp theo của bạn. ....
Hướng dẫn. Kỹ sư dữ liệu Câu hỏi phỏng vấn với Python. ....
Course..

Làm cách nào để thực hành phỏng vấn lập trình Python?

Phỏng vấn mã hóa Python: Mẹo & Thực tiễn tốt nhất..
Sử dụng Enumerate () để lặp lại cả chỉ số và giá trị ..
Gỡ lỗi mã có vấn đề với điểm dừng ().
Chuỗi định dạng hiệu quả với dây F ..
Sắp xếp danh sách với các đối số tùy chỉnh ..
Sử dụng máy phát điện thay vì danh sách toàn diện để bảo tồn bộ nhớ ..

Python có dễ dàng hơn cho các cuộc phỏng vấn không?

1. Sự phù hợp cho các cuộc phỏng vấn Một số ngôn ngữ chỉ phù hợp hơn cho các cuộc phỏng vấn - các ngôn ngữ cấp cao hơn như Python hoặc Java cung cấp các hàm thư viện tiêu chuẩn và cấu trúc dữ liệu cho phép bạn dịch giải pháp để mã hóa dễ dàng hơn.Từ kinh nghiệm của tôi với tư cách là một người phỏng vấn, hầu hết các ứng cử viên chọn Python hoặc Java.higher level languages like Python or Java provide standard library functions and data structures which allow you to translate solution to code more easily. From my experience as an interviewer, most candidates pick Python or Java.