3
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi đã tạo một phương thức yêu cầu một danh sách để hoạt động đúng. Tuy nhiên, bạn có thể gửi trong một danh sách hoặc một chuỗi đơn giản. Tôi muốn biến chuỗi đó thành một danh sách chứa toàn bộ chuỗi đó dưới dạng một phần tử. Ví dụ, nếu tôi có:
"I am a string"
Tôi muốn chuyển đổi nó thành:
["I am a string"]
Tôi có thể làm điều đó như vậy:
"I am a string".split["!@#$%^&*"]
Bởi vì tôi sẽ không bao giờ có sự kết hợp của các ký hiệu, nó sẽ luôn chuyển đổi nó thành một danh sách mà không cần xóa bất kỳ ký tự nào. Tuy nhiên, điều này dường như không phải là cách tuyệt vời của một cách để làm điều đó. Có cách nào khác không?
Matsjoyce
5.5636 Huy hiệu vàng31 Huy hiệu bạc36 Huy hiệu đồng6 gold badges31 silver badges36 bronze badges
Hỏi ngày 24 tháng 4 năm 2015 lúc 17:44Apr 24, 2015 at 17:44
2
>>> "abc"
'abc'
>>> ["abc"]
['abc']
>>> abc = "abc"
>>> abc
'abc'
>>> [abc]
['abc']
>>> "I am a string".split["!@#$%^&*"] == ["I am a string"]
True
Việc đặt giá trị trong khung vuông tạo nên một danh sách với một mục, giống như nhiều giá trị tạo ra một danh sách với nhiều mục. Container duy nhất không tuân theo mẫu này là tuple, vì các dấu ngoặc tròn cũng được sử dụng để nhóm. Trong trường hợp đó, chỉ cần thêm dấu phẩy sau một mục duy nhất:
>>> abc
'abc'
>>> [abc]
'abc'
>>> [abc,]
['abc',]
Nếu bạn muốn chức năng của mình xử lý danh sách và chuỗi khác nhau trong bìa, hãy mã hóa chức năng của bạn như:
def f[maybe_list]:
if not isinstance[maybe_list, list]:
maybe_list = [maybe_list]
# carry on, you have a list.
Đã trả lời ngày 24 tháng 4 năm 2015 lúc 17:45Apr 24, 2015 at 17:45
Matsjoycematsjoycematsjoyce
5.5636 Huy hiệu vàng31 Huy hiệu bạc36 Huy hiệu đồng6 gold badges31 silver badges36 bronze badges
4
Hỏi ngày 24 tháng 4 năm 2015 lúc 17:44
def listify[arg]:
return arg if isinstance[arg, list] else [arg]
listify["hello"]
['hello']
listify[["hi", "howdy"]]
['hi', 'howdy']
Việc đặt giá trị trong khung vuông tạo nên một danh sách với một mục, giống như nhiều giá trị tạo ra một danh sách với nhiều mục. Container duy nhất không tuân theo mẫu này là tuple, vì các dấu ngoặc tròn cũng được sử dụng để nhóm. Trong trường hợp đó, chỉ cần thêm dấu phẩy sau một mục duy nhất:
Nếu bạn muốn chức năng của mình xử lý danh sách và chuỗi khác nhau trong bìa, hãy mã hóa chức năng của bạn như:
Đã trả lời ngày 24 tháng 4 năm 2015 lúc 17:4525 gold badges160 silver badges285 bronze badges
MatsjoycematsjoyceApr 24, 2015 at 17:51
Nếu bạn đang cố gắng chấp nhận một chuỗi đơn hoặc danh sách các chuỗi làm đầu vào cho một hàm, nhưng sau đó muốn đảm bảo rằng bạn luôn làm việc với một danh sách theo các phần mã tiếp theo, bạn có thể kiểm tra loại Đối số và chuyển đổi nếu cần thiết:mattsilver
Điều này không phải xảy ra như một hàm riêng biệt, tôi chỉ đặt nó vào một chức năng để minh họa nhanh chóng. Bạn cũng có thể gán trực tiếp cho một biến thay vì trả lại.5 gold badges21 silver badges37 bronze badges
2
Martineau
#!python
myString = 'some string'
myList = list[]
myList.append[myString]
Huy hiệu vàng 116K25
Đã trả lời ngày 24 tháng 4 năm 2015 lúc 17:51
MattsilvermattsilverApr 24, 2015 at 17:52
4.2465 Huy hiệu vàng21 Huy hiệu bạc37 Huy hiệu đồngJim Dennis
Đây là một cách nhanh chóng:11 gold badges63 silver badges114 bronze badges
>>> s = "abc"
>>> if isinstance[s, str]:
... s = [ s ]
>>> s
['abc']
... Lưu ý rằng
["I am a string"]
0 thêm một mục duy nhất vào danh sách trong khi ["I am a string"]
1 thêm một chuỗi các mục vào danh sách.Vấn đề bạn đang gặp phải là một chuỗi Python cũng là một chuỗi các ký tự [và do đó là một "điều đó có thể xảy ra"]. Vì vậy, một cái gì đó như:
["I am a string"]
2 đối xử ["I am a string"]
3 giống như nó sẽ đối xử với bất kỳ điều gì khác. .s = s if isinstance[s, list] else [ s ]
Đã trả lời ngày 24 tháng 4 năm 2015 lúc 17:52Apr 24, 2015 at 17:57