Відповіді:
У Python 2:
mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))
У Python 3 (де printвбудована функція, а не синтаксична функція):
mylist = ['x', 3, 'b']
print('[%s]' % ', '.join(map(str, mylist)))
Обидва повертаються:
[x, 3, b]
Для цього використовується map()функція для виклику str для кожного елемента мого списку , створення нового списку рядків, який потім об'єднується в одну рядок str.join(). Потім %оператор форматування рядка підставляє рядок замість %sin "[%s]".
mapфункцію для виклику strкожного елемента mylist, створюючи новий список рядків, які потім об'єднує в один рядок str.join. Потім він використовує %рядок оператора форматування замінити рядок в замість %sв "[%s]".
"[{0}]".format(", ".join(str(i) for i in mylist))
map(f, xs)(або imapв python2.x) над (f(x) for x in xs), коли fце заздалегідь визначений дзвінок; який має тенденцію виконувати менше байт-кодів, і, як правило, є більш компактним. Звичайно, не map(lambda x:..., xs) набагато гірше, ніж(... for x in xs)
Це простий код, тому якщо ви новачок, ви повинні зрозуміти його досить легко.
mylist = ["x", 3, "b"]
for items in mylist:
print(items)
Він друкує їх усі без лапок, як хотілося.
Якщо ви використовуєте Python3:
print('[',end='');print(*L, sep=', ', end='');print(']')
print(end='['); print(*l, sep=', ', end=']\n')
Замість того, щоб використовувати map, я б рекомендував використовувати вираз генератора з можливістю joinприйняти ітератор:
def get_nice_string(list_or_iterator):
return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"
Тут joinє функцією-членом класу рядків str. Вона приймає один аргумент: список (або итератор) рядків, а потім повертає новий рядок з усіма елементами зчеплених з допомогою, в цьому випадку ,.
", ".join( str(x) for x in list_or_iterator).join('[]')
Ви можете видалити всі небажані символи з рядка, використовуючи його translate()метод із Noneза допомогою tableаргументу, за яким слід рядок, що містить символи, які ви хочете видалити для deletecharsаргументу.
lst = ['x', 3, 'b']
print str(lst).translate(None, "'")
# [x, 3, b]
Якщо ви використовуєте версію Python , перш ніж 2.6, вам потрібно використовувати stringмодуль translate()функцію замість оскільки здатність передавати Noneяк tableаргумент не додано до Python 2.6. Його використання виглядає так:
import string
print string.translate(str(lst), None, "'")
Використання string.translate()функції також буде працювати у версії 2.6+, тому її використання може бути кращим.
lst = ["it isn't", 3, 'b']==> ["it isnt", 3, b]а також зlst = ['it isn\'t', 3, 'b']
Ось інтерактивний сеанс, який демонструє деякі кроки в одній підкладці @ TokenMacGuy. Спочатку він використовує mapфункцію для перетворення кожного елемента у списку у рядок (насправді він створює новий список, а не конвертує елементи у старому списку). Потім він використовує метод рядків, joinщоб поєднати ці рядки ', 'між собою. Решта - це просто форматування рядків, що досить просто. (Редагувати: цей екземпляр є простим; форматування рядків загалом може бути дещо складним.)
Зауважте, що використання join- це простий та ефективний спосіб створити рядок з декількох підрядків, набагато ефективніший, ніж робити це шляхом послідовного додавання рядків до рядків, що передбачає багато копіювання за лаштунками.
>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'
Використовуючи .formatдля форматування рядків,
mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))
Вихід:
[x, 3, b]
Пояснення:
mapвикористовується для зіставлення кожного елемента списку з stringтипом.,розділювачем.[і ]в операторі print, щоб показати фігурні дужки списку.Довідково:
.formatдля форматування рядків PEP-3101
.formatнайбільш пітонічний спосіб. Але, звичайно, я приймаю незгоди. ;)
Мене надихнуло @AniMenon написати пітонічне більш загальне рішення.
mylist = ['x', 3, 'b']
print('[{}]'.format(', '.join(map('{}'.format, mylist))))
Він використовує лише formatметод. Немає сліду str, і це дозволяє чітко налаштувати формат елементів. Наприклад, якщо у вас є елементи плаваючого числа як елементи списку, ви можете налаштувати їх формат, додавши специфікатор перетворення, у цьому випадку:.2f
mylist = [1.8493849, -6.329323, 4000.21222111]
print("[{}]".format(', '.join(map('{:.2f}'.format, mylist))))
Вихід цілком пристойний:
[1.85, -6.33, 4000.21]
print(["Sam"])викликаєrepr("Sam"), який повертається'Sam'(із лапками), на відміну від того, коли ви викликаєтеprint("Sam")та викликає python,str("Sam")який повертаєтьсяSam(без лапок). Дивіться різницю міжstrіreprабо Pythonstrіlists для отримання додаткової інформації.