Cách thành ngữ nhất để làm như sau là gì?
def xstr[s]:
if s is None:
return ''
else:
return s
s = xstr[a] + xstr[b]
CẬP NHẬT: Tôi đang kết hợp đề xuất của Tryptich để sử dụng STR [S], điều này làm cho thói quen này hoạt động cho các loại khác ngoài chuỗi. Tôi rất ấn tượng với gợi ý Lambda của Vinay Sajip, nhưng tôi muốn giữ mã của mình tương đối đơn giản. I'm incorporating Tryptich's suggestion to use str[s], which makes this routine work for other types besides strings. I'm awfully impressed by Vinay Sajip's lambda suggestion, but I want to keep my code relatively simple.
def xstr[s]:
if s is None:
return ''
else:
return str[s]
hỏi ngày 23 tháng 6 năm 2009 lúc 19:17Jun 23, 2009 at 19:17
Mark Harrisonmark HarrisonMark Harrison
289K121 Huy hiệu vàng324 Huy hiệu bạc456 Huy hiệu Đồng121 gold badges324 silver badges456 bronze badges
5
Có lẽ ngắn nhất sẽ là
def xstr[s]:
return '' if s is None else str[s]
1Bởi vì không có gì sai và "x hoặc y" trả về y nếu x là sai. Xem các nhà khai thác Boolean để biết giải thích chi tiết. Nó ngắn, nhưng không rõ ràng lắm.
Đã trả lời ngày 31 tháng 8 năm 2012 lúc 12:28Aug 31, 2012 at 12:28
Dorvakdorvakdorvak
8.7014 Huy hiệu vàng33 Huy hiệu bạc42 Huy hiệu đồng4 gold badges33 silver badges42 bronze badges
6
def xstr[s]:
return '' if s is None else str[s]
Đã trả lời ngày 23 tháng 6 năm 2009 lúc 19:21Jun 23, 2009 at 19:21
SilentghostsilentghostSilentGhost
296K64 Huy hiệu vàng302 Huy hiệu bạc291 Huy hiệu Đồng64 gold badges302 silver badges291 bronze badges
8
Nếu bạn thực sự muốn chức năng của mình hoạt động như
def xstr[s]:
return '' if s is None else str[s]
2 tích hợp, nhưng trả về một chuỗi trống khi đối số không có, hãy làm điều này:def xstr[s]:
if s is None:
return ''
return str[s]
Đã trả lời ngày 23 tháng 6 năm 2009 lúc 19:28Jun 23, 2009 at 19:28
Ngân hàng Kenan BankskenanKenan Banks
Huy hiệu vàng 202K3434 gold badges151 silver badges171 bronze badges
6
Nếu bạn biết rằng giá trị sẽ luôn là một chuỗi hoặc không có:
xstr = lambda s: s or ""
print xstr["a"] + xstr["b"] # -> 'ab'
print xstr["a"] + xstr[None] # -> 'a'
print xstr[None] + xstr["b"] # -> 'b'
print xstr[None] + xstr[None] # -> ''
Đã trả lời ngày 23 tháng 6 năm 2009 lúc 22:01Jun 23, 2009 at 22:01
Vinay Sajipvinay SajipVinay Sajip
92.5K14 Huy hiệu vàng174 Huy hiệu bạc183 Huy hiệu đồng14 gold badges174 silver badges183 bronze badges
7
def xstr[s]:
return '' if s is None else str[s]
3 sẽ hoạt động tốt cho vấn đề đã nêu của bạn!Đã trả lời ngày 24 tháng 6 năm 2009 lúc 3:08Jun 24, 2009 at 3:08
Alex Martellialex MartelliAlex Martelli
829K164 Huy hiệu vàng1205 Huy hiệu bạc1385 Huy hiệu Đồng164 gold badges1205 silver badges1385 bronze badges
6
def xstr[s]:
return s or ""
Đã trả lời ngày 24 tháng 6 năm 2009 lúc 3:56Jun 24, 2009 at 3:56
Krystian Cybulskikrystian CybulskiKrystian Cybulski
105K11 Huy hiệu vàng66 Huy hiệu bạc97 Huy hiệu Đồng11 gold badges66 silver badges97 bronze badges
2
Cách chức năng [một lớp]
xstr = lambda s: '' if s is None else s
Đã trả lời ngày 23 tháng 6 năm 2009 lúc 19:31Jun 23, 2009 at 19:31
DariodarioDario
47.9K7 Huy hiệu vàng94 Huy hiệu bạc127 Huy hiệu đồng7 gold badges94 silver badges127 bronze badges
4
Một lớp lót gọn gàng để thực hiện tòa nhà này trên một số câu trả lời khác:
s = [lambda v: v or ''][a] + [lambda v: v or ''][b]
hoặc thậm chí chỉ:
s = [a or ''] + [b or '']
Đã trả lời ngày 13 tháng 5 năm 2017 lúc 0:39May 13, 2017 at 0:39
4
UPDATE:
Tôi chủ yếu sử dụng phương pháp này ngay bây giờ:
some_string = None
some_string or ''
Nếu một số_String không phải là
def xstr[s]:
return '' if s is None else str[s]
4, def xstr[s]:
return '' if s is None else str[s]
5 sẽ rút ngắn mạch ở đó và trả về nó, nếu không nó sẽ trả về chuỗi trống.OLD:
Chức năng tối đa hoạt động trong Python 2.x nhưng không phải trong 3.x:
def xstr[s]:
if s is None:
return ''
else:
return str[s]
0Đã trả lời ngày 23 tháng 4 năm 2014 lúc 19:56Apr 23, 2014 at 19:56
Radtekradtekradtek
32.5K11 Huy hiệu vàng139 Huy hiệu bạc110 Huy hiệu đồng11 gold badges139 silver badges110 bronze badges
2
def xstr[s]:
if s is None:
return ''
else:
return str[s]
1Đã trả lời ngày 23 tháng 6 năm 2009 lúc 19:28Jun 23, 2009 at 19:28
Ngân hàng Kenan Bankskenantobidope
Huy hiệu vàng 202K343 silver badges9 bronze badges
6
Nếu bạn biết rằng giá trị sẽ luôn là một chuỗi hoặc không có:
def xstr[s]:
if s is None:
return ''
else:
return str[s]
2Đã trả lời ngày 23 tháng 6 năm 2009 lúc 22:01Jun 24, 2009 at 3:37
Vinay Sajipvinay SajipPeter Ericson
92.5K14 Huy hiệu vàng174 Huy hiệu bạc183 Huy hiệu đồng1 gold badge12 silver badges4 bronze badges
def xstr[s]:
return '' if s is None else str[s]
3 sẽ hoạt động tốt cho vấn đề đã nêu của bạn!def xstr[s]:
if s is None:
return ''
else:
return str[s]
3Đã trả lời ngày 24 tháng 6 năm 2009 lúc 3:08Jul 16, 2018 at 10:26
Alex Martellialex Martellimaciek
829K164 Huy hiệu vàng1205 Huy hiệu bạc1385 Huy hiệu Đồng2 gold badges25 silver badges32 bronze badges
def xstr[s]:
if s is None:
return ''
else:
return str[s]
4Đã trả lời ngày 24 tháng 6 năm 2009 lúc 3:56Jun 23, 2009 at 19:25
Krystian Cybulskikrystian Cybulskiphillc
105K11 Huy hiệu vàng66 Huy hiệu bạc97 Huy hiệu Đồng1 gold badge21 silver badges15 bronze badges
1
Cách chức năng [một lớp]
Đã trả lời ngày 23 tháng 6 năm 2009 lúc 19:31Dariodario
def xstr[s]:
if s is None:
return ''
else:
return str[s]
647.9K7 Huy hiệu vàng94 Huy hiệu bạc127 Huy hiệu đồng
Một lớp lót gọn gàng để thực hiện tòa nhà này trên một số câu trả lời khác:May 26, 2015 at 10:27
hoặc thậm chí chỉ:
def xstr[s]:
if s is None:
return ''
else:
return str[s]
7Đã trả lời ngày 13 tháng 5 năm 2017 lúc 0:39
def xstr[s]:
if s is None:
return ''
else:
return str[s]
8Tôi chủ yếu sử dụng phương pháp này ngay bây giờ:Jun 23, 2009 at 19:37
Nếu một số_String không phải là
def xstr[s]:
return '' if s is None else str[s]
4, def xstr[s]:
return '' if s is None else str[s]
5 sẽ rút ngắn mạch ở đó và trả về nó, nếu không nó sẽ trả về chuỗi trống.sharjeelChức năng tối đa hoạt động trong Python 2.x nhưng không phải trong 3.x:6 gold badges33 silver badges49 bronze badges
3
Đã trả lời ngày 23 tháng 4 năm 2014 lúc 19:56
def xstr[s]:
if s is None:
return ''
else:
return str[s]
9RadtekradtekSep 26 at 13:21
32.5K11 Huy hiệu vàng139 Huy hiệu bạc110 Huy hiệu đồngJonathan
tobidopetobidope2 silver badges5 bronze badges
5603 Huy hiệu bạc9 Huy hiệu Đồng
def xstr[s]:
return '' if s is None else str[s]
0Biến thể ở trên nếu bạn cần tương thích với Python 2.4Sep 30, 2019 at 5:27
guagay_wkguagay_wkguagay_wk
Đã trả lời ngày 24 tháng 6 năm 2009 lúc 3:3754 gold badges173 silver badges279 bronze badges
1