Danh sách Python thay thế phần tử tại chỉ mục

Mã của bạn bắt đầu với từ trống được đặt thành một danh sách trống, nhưng sau đó nó được đặt thành một chuỗi. Chuỗi và danh sách không hoạt động theo cùng một cách

Các chuỗi là bất biến, vì vậy không có cú pháp nào để “thay đổi” chữ cái tại một vị trí trong chuỗi. Điều bạn có thể làm là tạo một chuỗi mới bằng cách sao chép tất cả các chữ cái trước và sau vị trí bạn muốn thay đổi

>>> s = "0123456789"
>>> s = s[:4] + "-" + s[5:]
>>> s
'0123-56789'

Hoặc xây dựng chuỗi một ký tự tại một thời điểm từ những gì bạn muốn. Đây là một ví dụ về việc chỉ hiển thị một số chữ cái nhất định của một chuỗi

Tìm hiểu cách thay thế các mục trong danh sách Python bằng cách giải các thuật toán cơ bản để sẵn sàng cho cuộc phỏng vấn mã hóa tiếp theo của bạn

Ảnh của Martin Woortman trên Bapt

Cập nhật. Nhiều bạn đã liên hệ với tôi để yêu cầu các tài nguyên có giá trị cho các cuộc phỏng vấn viết mã Python. Dưới đây tôi chia sẻ 4 khóa học mà tôi thực sự khuyên bạn nên tiếp tục luyện tập sau khi thực hành các thuật toán trong bài đăng này

  • LeetCode trong Python. 50 câu hỏi phỏng vấn viết mã thuật toán → Tốt nhất cho các vòng viết mã Chuẩn bị
  • Các vấn đề về mã hóa nâng cao của Python [StrataScratch] → Nền tảng tốt nhất mà tôi tìm thấy để chuẩn bị cho các cuộc phỏng vấn mã hóa Python & SQL cho đến nay. Tốt hơn và rẻ hơn LeetCode
  • Thực hành các câu hỏi phỏng vấn mã hóa bằng Python [60 vấn đề trở lên]
  • Bằng cấp nano về Kỹ thuật dữ liệu Python → Khóa học chất lượng cao nếu bạn có nhiều thời gian hơn để cam kết. **GIẢM GIÁ LÊN TỚI 75% CÁC KHÓA HỌC UDACITY THÁNG 3/2022**

Hy vọng bạn cũng sẽ thấy chúng hữu ích. Bây giờ thưởng thức bài viết. D

3 khóa học về kỹ thuật dữ liệu để thăng tiến trong sự nghiệp của bạn vào năm 2021

Tham gia vào ngành dữ liệu, thay đổi vai trò hoặc đơn giản là học các công nghệ tiên tiến bằng cách đăng ký vào Kỹ thuật dữ liệu…

hướng tới khoa học dữ liệu. com

Giới thiệu

Trong khi chuẩn bị cho vòng mã hóa Python tiếp theo của mình, bạn có thể nhận thấy rằng các thuật toán yêu cầu thao tác với một hoặc nhiều danh sách xuất hiện khá thường xuyên. Sớm hay muộn, bạn cũng sẽ gặp một trong số họ trong các cuộc phỏng vấn của mình.

Các thuật toán yêu cầu thao tác với một hoặc nhiều danh sách xuất hiện khá thường xuyên. Sớm hay muộn, bạn cũng sẽ gặp một trong số họ trong các cuộc phỏng vấn của mình.

Nhằm giúp các bạn trong quá trình làm chủ cấu trúc dữ liệu này và nâng cao kỹ năng viết mã của mình, dưới đây mình trình bày 4 phương pháp thay thế một mục trong danh sách Python cũng như 4 thuật toán đơn giản để các bạn kiểm tra kỹ năng của mình

Hầu hết các câu hỏi phỏng vấn cổ điển có thể được giải quyết bằng nhiều cách tiếp cận, vì vậy đối với mỗi vấn đề, hãy cố gắng đưa ra giải pháp của bạn trước, trước khi xem giải pháp tôi đã cung cấp. Tương tự như các kỹ năng khác, phỏng vấn thuật toán là một lĩnh vực mà bạn có thể cải thiện đáng kể nếu thực hành nhất quán

1. lập chỉ mục

Cách đơn giản nhất để thay thế một mục trong danh sách là sử dụng lập chỉ mục, vì nó cho phép bạn chọn một mục hoặc phạm vi mục trong danh sách, sau đó thay đổi giá trị tại một vị trí cụ thể, sử dụng toán tử gán

Ví dụ: giả sử bạn đang làm việc với danh sách sau bao gồm sáu số nguyên

lst = [10, 7, 12, 56, 3, 14]

và bạn được yêu cầu thêm 10 vào số nguyên thứ ba từ bên trái. Vì các danh sách được lập chỉ mục bắt đầu từ 0, nên bạn có thể sử dụng một trong các cú pháp sau để thay đổi phần tử bằng

lst = [10, 7, 12, 56, 3, 14]
9 mà trong trường hợp của chúng ta là số
#Option 1
lst[2]= lst[2] + 10
#Option 2
lst[2]+= 10 #no need to repeat "lst[2]" then more elegant
#Option 3
lst[2] = 22 #that is 12 + 10
0

#Option 1
lst[2]= lst[2] + 10
#Option 2
lst[2]+= 10 #no need to repeat "lst[2]" then more elegant
#Option 3
lst[2] = 22 #that is 12 + 10

Bây giờ hãy thử thực hành phương pháp đầu tiên này để giải bài toán sau

VẤN ĐỀ #1

Đưa ra một danh sách không trống bao gồm các số nguyên [từ 1 đến 9], coi nó như thể nó đại diện cho một số nguyên duy nhất không âm và tăng nó lên một. Trả về danh sách đã cập nhật

Trong kết quả, các chữ số phải được lưu trữ sao cho chữ số đầu tiên của số có được bằng tổng, nằm ở đầu danh sách và mỗi phần tử trong danh sách chứa một chữ số. Bạn có thể cho rằng số nguyên không chứa bất kỳ số 0 nào đứng đầu, ngoại trừ chính số 0

Lưu ý rằng danh sách đầu vào của chúng tôi được tạo thành từ bốn số nguyên không âm cùng đại diện cho số nguyên 9999. Điều này trong trường hợp cạnh, bởi vì bằng cách thêm 1 vào số này, bạn sẽ nhận được một số nguyên có 5 chữ số [thay vì 4 ban đầu] và số 1 ở đầu

Để giải quyết các loại tình huống này, giải pháp tận dụng hai câu lệnh có điều kiện bắt đầu đánh giá các chữ số từ cuối đến đầu [sử dụng

#Option 1
lst[2]= lst[2] + 10
#Option 2
lst[2]+= 10 #no need to repeat "lst[2]" then more elegant
#Option 3
lst[2] = 22 #that is 12 + 10
1 để lật thứ tự của các chỉ mục]. Nếu không bằng 9, CHỈ chữ số cuối cùng được tăng thêm 1 thông qua cú pháp quen thuộc hiện nay là
#Option 1
lst[2]= lst[2] + 10
#Option 2
lst[2]+= 10 #no need to repeat "lst[2]" then more elegant
#Option 3
lst[2] = 22 #that is 12 + 10
2 và danh sách sửa đổi được trả về ngay lập tức mà không đánh giá các chỉ mục còn lại

Ngoài ra, nếu chữ số cuối cùng là 9, thì nó được thay thế bằng 0 và chữ số tiếp theo [thứ hai đến cuối cùng] được đánh giá. Nếu giá trị này không bằng 9, thì 1 sẽ được thêm vào và danh sách đã sửa đổi được trả về. Mặt khác, nếu mỗi một trong các chữ số sau là 9, thì hàm sẽ trả về một danh sách có số 1 đứng đầu và nhiều số 0 bằng số phần tử trong danh sách ban đầu

10 MCQ để thực hành trước Databricks Apache Spark 3 của bạn. 0 Bài kiểm tra dành cho nhà phát triển

Bạn nỗ lực. Bạn đã đầu tư tiền bạc và thời gian. Bây giờ, kỳ thi đã cận kề và bạn chỉ có một lần thử…Sẵn sàng để hoàn thành nó chưa?

anbento4. trung bình. com

2. cho vòng lặp

Trong bài toán trên, mục tiêu chỉ là thay thế số nguyên cuối cùng trong danh sách, tăng nó lên 1, trong khi phép lặp chỉ được sử dụng để bao gồm các trường hợp cạnh.
Tuy nhiên, nếu chúng ta muốn thay thế nhiều thành phần trong danh sách cùng một lúc thì sao?

Trong trường hợp này, sử dụng vòng lặp for sẽ hoạt động tốt vì nó có thể được sử dụng để lặp qua các mục của danh sách. Để thấy nó hoạt động như thế nào, hãy quay lại danh sách ban đầu và nhân tất cả các số nguyên với 2

lst = [10, 7, 12, 56, 3, 14]for i in range[len[lst]]:
lst[i] = lst[i] * 2
print[lst]Output: [20, 14, 24, 112, 6, 28]

Ví dụ trên là cơ bản, nhưng nếu bạn được yêu cầu áp dụng logic phức tạp hơn một chút trong khi thay thế các mục trong danh sách thì sao?

VẤN ĐỀ #2

Xem xét một danh sách các số nguyên. Nếu số lẻ tăng lên 1, nếu số chẵn tăng lên 2

Lưu ý rằng, thay vì

#Option 1
lst[2]= lst[2] + 10
#Option 2
lst[2]+= 10 #no need to repeat "lst[2]" then more elegant
#Option 3
lst[2] = 22 #that is 12 + 10
0, giải pháp này sử dụng phương pháp
#Option 1
lst[2]= lst[2] + 10
#Option 2
lst[2]+= 10 #no need to repeat "lst[2]" then more elegant
#Option 3
lst[2] = 22 #that is 12 + 10
1 để lặp lại tất cả các phần tử của danh sách, kiểm tra xem các số nguyên là số lẻ hay số chẵn - thông qua toán tử modulo - và thay thế chúng bằng cách thêm 1 hoặc 2 tương ứng

Liệt kê là một hàm tích hợp trong Python và có thể được sử dụng để thêm bộ đếm tự động trong khi lặp qua một đối tượng có thể lặp lại. Khi tham số

#Option 1
lst[2]= lst[2] + 10
#Option 2
lst[2]+= 10 #no need to repeat "lst[2]" then more elegant
#Option 3
lst[2] = 22 #that is 12 + 10
2 tùy chọn không được chỉ định, bộ đếm bắt đầu từ 0, hoạt động giống như nó là một chỉ mục thực tế

Vì lý do này, việc sử dụng

#Option 1
lst[2]= lst[2] + 10
#Option 2
lst[2]+= 10 #no need to repeat "lst[2]" then more elegant
#Option 3
lst[2] = 22 #that is 12 + 10
1 để giải các thuật toán yêu cầu bạn thao tác với một danh sách dựa trên một điều kiện áp dụng cho chỉ mục hoặc [như trong trường hợp này] các giá trị danh sách là rất phổ biến.

3. Liệt kê các hiểu biết

Cú pháp hiểu danh sách là một phương pháp tao nhã hơn để lặp qua các phần tử của danh sách và áp dụng một số hình thức thao tác. Điều này là do khả năng hiểu cho phép bạn tạo một danh sách mới trong dòng, làm cho mã của bạn trông rất gọn gàng và sạch sẽ

Bạn có thể chuyển vòng lặp for ở ví dụ trên sang dạng hiểu như sau

________số 8

Để điền vào danh sách mới, bạn cũng được phép chỉ định các điều kiện cơ bản như một phần của cú pháp hiểu danh sách. Đây chính xác là những gì bạn cần làm để giải thuật toán sau

VẤN ĐỀ #3

Cho một danh sách các số nguyên, được sắp xếp theo thứ tự tăng dần, trả về một danh sách cũng được sắp xếp theo thứ tự tăng dần bao gồm.
- bình phương của số nguyên, nếu chia hết cho 3
- số nguyên ban đầu, nếu không chia hết cho 3

Trong trường hợp này, điều kiện if được chỉ định trước

#Option 1
lst[2]= lst[2] + 10
#Option 2
lst[2]+= 10 #no need to repeat "lst[2]" then more elegant
#Option 3
lst[2] = 22 #that is 12 + 10
4 vì có sự hiện diện của câu lệnh
#Option 1
lst[2]= lst[2] + 10
#Option 2
lst[2]+= 10 #no need to repeat "lst[2]" then more elegant
#Option 3
lst[2] = 22 #that is 12 + 10
5. Tuy nhiên, khi không yêu cầu
#Option 1
lst[2]= lst[2] + 10
#Option 2
lst[2]+= 10 #no need to repeat "lst[2]" then more elegant
#Option 3
lst[2] = 22 #that is 12 + 10
5, bạn chỉ cần làm theo cú pháp

lst = [10, 7, 12, 56, 3, 14]
24. Cắt lát & Xáo trộn

Đôi khi, trong các cuộc phỏng vấn viết mã, bạn có thể được yêu cầu sắp xếp lại các mục trong danh sách để chúng xuất hiện theo một thứ tự khác. Điều này có thể đạt được thông qua cắt và xáo trộn

Ví dụ: nếu bạn muốn hoán đổi 3 phần tử đầu tiên và 3 phần tử cuối cùng trong danh sách ban đầu của mình, bạn có thể viết

lst = [10, 7, 12, 56, 3, 14]
3

Có lẽ, trong trường hợp này, nói về một sự thay thế hơi dài dòng vì thực tế bạn chỉ đang thay đổi vị trí của các phần tử trong danh sách. Tuy nhiên, phương pháp này khá hiệu quả và có thể giúp bạn giải quyết vấn đề sau

VẤN ĐỀ #4

Cho danh sách các số gồm 2n phần tử có dạng [x1,x2,…,xn,y1,y2,…,yn]. Trả về mảng dạng [x1,y1,x2,y2,…,xn,yn]

Bài tập cung cấp cho bạn chỉ mục để sử dụng để cắt [trong trường hợp này là

#Option 1
lst[2]= lst[2] + 10
#Option 2
lst[2]+= 10 #no need to repeat "lst[2]" then more elegant
#Option 3
lst[2] = 22 #that is 12 + 10
7] và yêu cầu bạn xáo trộn danh sách đầu vào, bằng cách tạo các cặp số nguyên mới

Các số nguyên thuộc về mỗi cặp, phải là những số chia sẻ cùng một chỉ số, nếu chúng ta cắt danh sách ban đầu thành hai danh sách con [

#Option 1
lst[2]= lst[2] + 10
#Option 2
lst[2]+= 10 #no need to repeat "lst[2]" then more elegant
#Option 3
lst[2] = 22 #that is 12 + 10
8 và
#Option 1
lst[2]= lst[2] + 10
#Option 2
lst[2]+= 10 #no need to repeat "lst[2]" then more elegant
#Option 3
lst[2] = 22 #that is 12 + 10
9] Có thể dễ dàng đạt được kết quả này bằng cách sử dụng
lst = [10, 7, 12, 56, 3, 14]for i in range[len[lst]]:
lst[i] = lst[i] * 2
print[lst]Output: [20, 14, 24, 112, 6, 28]
0 để ghép các phần tử có trong danh sách con lại với nhau.

Phần kết luận

Trong bài viết này, tôi đã hướng dẫn bạn 4 phương pháp để thay thế các mục trong danh sách Python đó là lập chỉ mục, vòng lặp for, hiểu danh sách và xáo trộn cắt lát

Bản thân mỗi thao tác đều đơn giản, nhưng bạn sẽ có thể thành thạo chúng bằng cách chọn phương pháp phù hợp và hiệu quả nhất trong khi giải quyết các thử thách phức tạp hơn, để chuẩn bị cho vòng viết mã tiếp theo của bạn

Vì lý do này, tôi cũng đã trình bày và chia sẻ giải pháp của 4 thuật toán [một thuật toán cho mỗi phương pháp] đại diện cho mức độ phức tạp mà bạn sẽ tìm thấy khi phỏng vấn cho các vai trò dữ liệu cấp trung và cấp cơ sở.

Cũng lưu ý rằng các sự cố được trình bày trong bài đăng này là sự diễn giải lại một chút về các sự cố có sẵn trên Leetcode. Mỗi vấn đề thừa nhận nhiều giải pháp, do đó, các mỏ chỉ là những giải pháp mang tính biểu thị

Lưu ý dành cho độc giả của tôi

Bài đăng này bao gồm các liên kết liên kết mà tôi có thể kiếm một khoản hoa hồng nhỏ mà không phải trả thêm phí cho bạn, nếu bạn mua hàng

Chủ Đề