Hướng dẫn how do you replace null in a list in python? - làm thế nào để bạn thay thế null trong một danh sách trong python?

Tôi có:

d = [1,'q','3', None, 'temp']

Tôi muốn thay thế không có giá trị thành 'none' hoặc bất kỳ chuỗi nào

Hiệu ứng mong đợi:

d = [1,'q','3', 'None', 'temp']

thử thay thế trong chuỗi và cho vòng lặp nhưng tôi gặp lỗi:

TypeError: expected a character buffer object

Hỏi ngày 14 tháng 10 năm 2013 lúc 15:36Oct 14, 2013 at 15:36

2

Sử dụng một danh sách đơn giản hiểu biết:

['None' if v is None else v for v in d]

Demo:

>>> d = [1,'q','3', None, 'temp']
>>> ['None' if v is None else v for v in d]
[1, 'q', '3', 'None', 'temp']

Lưu ý bài kiểm tra

d = [1,'q','3', 'None', 'temp']
2 để phù hợp với singleton
d = [1,'q','3', 'None', 'temp']
3.

Đã trả lời ngày 14 tháng 10 năm 2013 lúc 15:36Oct 14, 2013 at 15:36

Martijn Pieters ♦ Martijn PietersMartijn Pieters

997K279 Huy hiệu vàng3923 Huy hiệu bạc3264 Huy hiệu Đồng279 gold badges3923 silver badges3264 bronze badges

0

Bạn có thể chỉ cần sử dụng

d = [1,'q','3', 'None', 'temp']
4 và chuyển đổi tất cả các mục thành các chuỗi bằng hàm
d = [1,'q','3', 'None', 'temp']
5:all items to strings using the
d = [1,'q','3', 'None', 'temp']
5 function:

map[str, d]
#['1', 'q', '3', 'None', 'temp']

Nếu bạn chỉ muốn chuyển đổi các giá trị

d = [1,'q','3', 'None', 'temp']
3, bạn có thể làm:

[str[di] if di is None else di for di in d]

Đã trả lời ngày 14 tháng 10 năm 2013 lúc 15:44Oct 14, 2013 at 15:44

0

Bắt đầu Python 3.6 Bạn có thể làm điều đó ở dạng ngắn hơn:

d = [f'{e}' for e in d]

Hy vọng điều này sẽ giúp ích cho một người nào đó kể từ đó, tôi đã gặp vấn đề này chỉ một lúc trước.

Đã trả lời ngày 29 tháng 9 năm 2017 lúc 12:42Sep 29, 2017 at 12:42

UzzyuzzyUzzy

4218 Huy hiệu bạc15 Huy hiệu Đồng8 silver badges15 bronze badges

2

Tuy nhiên, sử dụng một vòng lặp dài và không hiệu quả cho người mới bắt đầu, nó sẽ trông giống như:

d = [1,'q','3', None, 'temp']
e = []

for i in d:
    if i is None: #if i == None is also valid but slower and not recommended by PEP8
        e.append["None"]
    else:
        e.append[i]

d = e
print d
#[1, 'q', '3', 'None', 'temp']

Chỉ dành cho người mới bắt đầu, câu trả lời @martins phù hợp hơn về sức mạnh và hiệu quả

Đã trả lời ngày 14 tháng 10 năm 2013 lúc 15:42Oct 14, 2013 at 15:42

K Dawgk DawgK DawG

12.9k9 Huy hiệu vàng33 Huy hiệu bạc65 Huy hiệu Đồng9 gold badges33 silver badges65 bronze badges

4

Danh sách hiểu là cách đúng đắn, nhưng trong trường hợp, vì những lý do nổi tiếng nhất với bạn, bạn thà thay thế nó tại chỗ hơn là tạo một danh sách mới [cho rằng thực tế là danh sách Python là có thể thay đổi], một cách tiếp cận thay thế là theo sau

d = [1,'q','3', None, 'temp', None]
try:
    while True:
        d[d.index[None]] = 'None'
except ValueError:
    pass

>>> d
[1, 'q', '3', 'None', 'temp', 'None']

Đã trả lời ngày 14 tháng 10 năm 2013 lúc 15:43Oct 14, 2013 at 15:43

AbhijitabhijitAbhijit

60.4K18 Huy hiệu vàng128 Huy hiệu bạc199 Huy hiệu đồng18 gold badges128 silver badges199 bronze badges

Tôi không nhận thấy bất kỳ câu trả lời nào bằng Lambda ..

Một người muốn sử dụng Lambda .... [Xem xét các bình luận để giải thích.]

d = [1,'q','3', 'None', 'temp']
0

Đã trả lời ngày 29 tháng 6 năm 2020 lúc 3:34Jun 29, 2020 at 3:34

Pavan Chandakapavan ChandakaPavan Chandaka

10,9k5 Huy hiệu vàng25 Huy hiệu bạc33 Huy hiệu Đồng5 gold badges25 silver badges33 bronze badges

Giải pháp của tôi là phù hợp với

d = [1,'q','3', 'None', 'temp']
3 và thay thế nó.

d = [1,'q','3', 'None', 'temp']
1

Đã trả lời ngày 17 tháng 7 lúc 10:55Jul 17 at 10:55

0

Bài Viết Liên Quan

Chủ Đề