Trong trường hợp bạn đang tự hỏi về hiệu suất của các phương pháp khác nhau, đây là một số thời gian:
In [1]: words = [str[i] for i in range[10000]]
In [2]: %timeit replaced = [w.replace['1', ''] for w in words]
100 loops, best of 3: 2.98 ms per loop
In [3]: %timeit replaced = map[lambda x: str.replace[x, '1', ''], words]
100 loops, best of 3: 5.09 ms per loop
In [4]: %timeit replaced = map[lambda x: x.replace['1', ''], words]
100 loops, best of 3: 4.39 ms per loop
In [5]: import re
In [6]: r = re.compile['1']
In [7]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 6.15 ms per loop
Như bạn có thể thấy đối với các mẫu đơn giản như vậy, sự hiểu biết danh sách được chấp nhận là nhanh nhất, nhưng hãy nhìn vào những điều sau đây:
In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
Điều này cho thấy rằng đối với các thay thế phức tạp hơn, một reg-exp được biên dịch sẵn [như trong 9-10
] có thể nhanh hơn [nhiều]. Nó thực sự phụ thuộc vào vấn đề của bạn và phần ngắn nhất của reg-exp.
Làm thế nào để bạn thay thế nhiều giá trị trong danh sách Python?
- Một cách mà chúng ta có thể làm điều này là bằng cách sử dụng một vòng lặp. Một trong những thuộc tính chính của danh sách Python là chúng có thể chứa các giá trị trùng lặp. Vì điều này, chúng ta có thể lặp qua từng mục trong danh sách và kiểm tra giá trị của nó. Nếu giá trị là một giá trị chúng tôi muốn thay thế, thì chúng tôi thay thế nó.
- Thay thế [] làm gì trong Python?
- Phương thức python String thay thế [] Phương thức thay thế [] thay thế một cụm từ được chỉ định bằng một cụm từ được chỉ định khác. Lưu ý: Tất cả các lần xuất hiện của cụm từ được chỉ định sẽ được thay thế, nếu không có gì khác được chỉ định.
- Trong bài viết này, chúng ta sẽ xem cách thay thế giá trị trong danh sách bằng Python. Chúng ta có thể thay thế các giá trị trong danh sách theo cách phục vụ. Dưới đây là các phương pháp để thay thế các giá trị trong danh sách.
- Sử dụng lập chỉ mục danh sách
Sử dụng cho vòng lặp
Sử dụng trong khi vòng lặp
Sử dụng chức năng Lambda l[index]=new_value
Code:
Python3
Sử dụng danh sách cắt
Phương pháp 1: Sử dụng lập chỉ mục danh sách
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']6
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']7
Output:
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']
Chúng ta có thể truy cập các mục của danh sách bằng cách sử dụng lập chỉ mục. Đây là phương pháp đơn giản nhất và dễ nhất để thay thế các giá trị trong danh sách trong Python. Nếu chúng tôi muốn thay thế mục đầu tiên của danh sách, chúng tôi có thể sử dụng chỉ mục 0. Dưới đây, chỉ mục là một chỉ mục của mục mà chúng tôi muốn thay thế và new_value là một giá trị sẽ thay thế giá trị cũ trong danh sách.
Cú pháp: & nbsp; l [index] = new_value
Python3
l
=
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']0
In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
1In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
4In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
3__l
=
In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
36['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']5
In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
38['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']5
In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
40 In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
41In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
9__Phương pháp 5: Sử dụng Danh sách cắt
['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']5
['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']0509
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']5
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']8
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']9
['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']0
=
__ In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
9['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']4
['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']5
['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']0509
['Hardik', 'Rohit', 'Shikhar', 'Virat', 'Pant']9
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']6
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']7
Output:
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']
Phương pháp 3: Sử dụng trong khi vòng lặp
Chúng ta cũng có thể sử dụng một vòng lặp thời gian để thay thế các giá trị trong danh sách. Trong khi vòng lặp làm công việc tương tự như đối với Loop. Trong vòng lặp trước tiên, chúng tôi xác định một biến có giá trị 0 và lặp qua danh sách. Nếu giá trị khớp với giá trị mà chúng tôi muốn thay thế thì chúng tôi thay thế nó bằng giá trị mới.
Python3
l
=
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']0
In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
1In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
4In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
3__['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']2
=
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']2
l
8 l
9
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']6
=
1['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']8
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']9
['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']0
=
__ In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
1['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']4
['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']5
['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']0509
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']5
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']8
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']9
['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']0
=
__ In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
9['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']4
['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']5
['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']0509
['Hardik', 'Rohit', 'Shikhar', 'Virat', 'Pant']9
Phương pháp 3: Sử dụng trong khi vòng lặp
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']6
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']7
Output:
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']
Chúng ta cũng có thể sử dụng một vòng lặp thời gian để thay thế các giá trị trong danh sách. Trong khi vòng lặp làm công việc tương tự như đối với Loop. Trong vòng lặp trước tiên, chúng tôi xác định một biến có giá trị 0 và lặp qua danh sách. Nếu giá trị khớp với giá trị mà chúng tôi muốn thay thế thì chúng tôi thay thế nó bằng giá trị mới.
l
=
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']0
In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
1In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
4In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
3__
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']2=
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']2l=list[map[lambda x: x.replace[‘old_value’,’new_value’],l]]
Python3
l
=
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']0
In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
1In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
4In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
3__['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']2
=
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']2
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']6
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']7
Output:
['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']
l
8 l
9['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']
6=
1
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']8
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']9
['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']0
=
__ In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
1['Hardik', 'Rohit', 'Rahul', 'Virat', 'Ishan']4
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']8['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']216In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words] 100 loops, best of 3: 8.25 ms per loop In [9]: r = re.compile['[1|324|567]'] In [10]: %timeit replaced = [r.sub['', w] for w in words] 100 loops, best of 3: 7.87 ms per loop
=
18l=l[:index]+[‘new_value’]+l[index+1:]In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words] 100 loops, best of 3: 8.25 ms per loop In [9]: r = re.compile['[1|324|567]'] In [10]: %timeit replaced = [r.sub['', w] for w in words] 100 loops, best of 3: 7.87 ms per loop
Python3
l
=
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']0
In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
1In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
4In [8]: %timeit replaced = [w.replace['1', ''].replace['324', ''].replace['567', ''] for w in words]
100 loops, best of 3: 8.25 ms per loop
In [9]: r = re.compile['[1|324|567]']
In [10]: %timeit replaced = [r.sub['', w] for w in words]
100 loops, best of 3: 7.87 ms per loop
3__['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']2
=
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']2
l
8 l
9
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Ishan']6
=
1['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']6
['Shardul', 'Rohit', 'Rahul', 'Virat', 'Pant']7
Output:
['Hardik', 'Rohit', 'Shikhar', 'Virat', 'Pant']