Câu trả lời:
Trong Python 2:
mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))
Trong Python 3 (đâu printlà một hàm nội trang và không phải là một tính năng cú pháp nữa):
mylist = ['x', 3, 'b']
print('[%s]' % ', '.join(map(str, mylist)))
Cả hai đều trở lại:
[x, 3, b]
Đây là cách sử dụng map()hàm để gọi str cho mỗi phần tử của danh sách mylist , tạo một danh sách các chuỗi mới sau đó được nối thành một chuỗi với str.join(). Sau đó, %toán tử định dạng chuỗi thay thế chuỗi trong thay vì %strong "[%s]".
maphàm để gọi strcho từng phần tử mylist, tạo một danh sách các chuỗi mới mà anh ta sau đó nối thành một chuỗi với str.join. Sau đó, anh ta sử dụng %toán tử định dạng chuỗi để thay thế chuỗi trong thay vì %strong "[%s]".
"[{0}]".format(", ".join(str(i) for i in mylist))
map(f, xs)(hoặc imaptrong python2.x) hơn (f(x) for x in xs), khi nào flà một cuộc gọi được xác định trước; có xu hướng thực thi ít mã byte hơn và thường nhỏ gọn hơn. Chắc chắn điều đó không map(lambda x:..., xs) tệ hơn nhiều so với(... for x in xs)
Đây là mã đơn giản, vì vậy nếu bạn là người mới, bạn nên hiểu nó một cách dễ dàng.
mylist = ["x", 3, "b"]
for items in mylist:
print(items)
Nó in tất cả chúng mà không có dấu ngoặc kép, như bạn muốn.
Nếu bạn đang sử dụng Python3:
print('[',end='');print(*L, sep=', ', end='');print(']')
print(end='['); print(*l, sep=', ', end=']\n')
Thay vì sử dụng map, tôi khuyên bạn nên sử dụng biểu thức trình tạo với khả năng joinchấp nhận trình lặp:
def get_nice_string(list_or_iterator):
return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"
Đây, joinlà một hàm thành viên của lớp chuỗi str. Nó nhận một đối số: một danh sách (hoặc trình lặp) các chuỗi, sau đó trả về một chuỗi mới với tất cả các phần tử được nối bởi, trong trường hợp này ,,.
", ".join( str(x) for x in list_or_iterator).join('[]')
Bạn có thể xóa tất cả các ký tự không mong muốn từ một chuỗi sử dụng của nó translate()phương pháp với Noneđối với tablelập luận theo sau là một chuỗi chứa ký tự (s) mà bạn muốn xóa do của nó deletecharsđối số.
lst = ['x', 3, 'b']
print str(lst).translate(None, "'")
# [x, 3, b]
Nếu bạn đang sử dụng phiên bản Python trước 2.6, bạn sẽ cần sử dụng chức năng stringcủa mô-đun translate()thay vì khả năng truyền Nonelàm tableđối số không được thêm vào cho đến khi Python 2.6. Sử dụng nó trông như thế này:
import string
print string.translate(str(lst), None, "'")
Sử dụng string.translate()hàm cũng sẽ hoạt động trong 2.6+, vì vậy việc sử dụng nó có thể thích hợp hơn.
lst = ["it isn't", 3, 'b']==> ["it isnt", 3, b]và cũng vớilst = ['it isn\'t', 3, 'b']
Đây là một phiên tương tác hiển thị một số bước trong một lớp lót của @ TokenMacGuy. Đầu tiên, anh ta sử dụng maphàm để chuyển đổi từng mục trong danh sách thành một chuỗi (thực ra, anh ta đang tạo một danh sách mới, không chuyển đổi các mục trong danh sách cũ). Sau đó, anh ấy đang sử dụng phương thức chuỗi joinđể kết hợp các chuỗi đó với ', 'giữa chúng. Phần còn lại chỉ là định dạng chuỗi, khá đơn giản. (Chỉnh sửa: trường hợp này rất đơn giản; định dạng chuỗi nói chung có thể hơi phức tạp.)
Lưu ý rằng việc sử dụng joinlà một cách đơn giản và hiệu quả để xây dựng một chuỗi từ một số chuỗi con, hiệu quả hơn nhiều so với việc thực hiện bằng cách thêm chuỗi liên tiếp vào chuỗi, liên quan đến việc sao chép nhiều phía sau.
>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'
Sử dụng .formatđể định dạng chuỗi,
mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))
Đầu ra:
[x, 3, b]
Giải trình:
mapđược sử dụng để ánh xạ từng phần tử của danh sách cần stringnhập.,dấu phân tách.[và ]trong câu lệnh in để hiển thị các dấu ngoặc nhọn trong danh sách.Tham khảo:
.formatđể định dạng chuỗi PEP-3101
.formatcon trăn nhất. Nhưng, tất nhiên, tôi chấp nhận những bất đồng. ;)
Tôi đã lấy cảm hứng từ @AniMenon để viết một giải pháp tổng quát hơn cho trăn.
mylist = ['x', 3, 'b']
print('[{}]'.format(', '.join(map('{}'.format, mylist))))
Nó chỉ sử dụng formatphương pháp. Không có dấu vết strvà nó cho phép tinh chỉnh định dạng phần tử. Ví dụ: nếu bạn có số thực dưới dạng phần tử của danh sách, bạn có thể điều chỉnh định dạng của chúng, bằng cách thêm từ định nghĩa chuyển đổi, trong trường hợp này:.2f
mylist = [1.8493849, -6.329323, 4000.21222111]
print("[{}]".format(', '.join(map('{:.2f}'.format, mylist))))
Đầu ra là khá tốt:
[1.85, -6.33, 4000.21]
print(["Sam"])các lệnh gọirepr("Sam")trả về'Sam'(có dấu ngoặc kép), không giống như khi bạn gọiprint("Sam")và lệnh gọi pythonstr("Sam")trả vềSam(không có dấu ngoặc kép). Xem sự khác biệt giữastrvàreprhoặc Pythonstrvàlists để biết thêm thông tin.