Ответ 1
print(', '.join(names))
Это, как это звучит, просто берет все элементы списка и соединяет их с помощью ', '
.
У меня есть список в Python например.
names = ["Sam", "Peter", "James", "Julian", "Ann"]
Я хочу напечатать массив в одной строке без нормальной "[]
names = ["Sam", "Peter", "James", "Julian", "Ann"]
print (names)
Выдает результат как:
["Sam", "Peter", "James", "Julian", "Ann"]
Это не формат, который я хочу, вместо этого хочу, чтобы это было так:
Sam, Peter, James, Julian, Ann
Примечание. Он должен быть в одной строке.
print(', '.join(names))
Это, как это звучит, просто берет все элементы списка и соединяет их с помощью ', '
.
Вот простой.
names = ["Sam", "Peter", "James", "Julian", "Ann"]
print(*names, sep=", ")
звезда распаковывает список и возвращает каждый элемент в списке.
Общее решение, работает с массивами без строк:
>>> print str(names)[1:-1]
'Sam', 'Peter', 'James', 'Julian', 'Ann'
Если входной массив Тип целого, вам нужно сначала преобразовать массив в массив string type, а затем использовать метод join
для соединения с ,
или space, что бы вы ни пожелали. например:
>>> arr = [1, 2, 4, 3]
>>> print(", " . join(arr))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, int found
>>> sarr = [str(a) for a in arr]
>>> print(", " . join(sarr))
1, 2, 4, 3
>>>
Прямое использование соединения, которое будет соединяться с целым числом, и строка будет вызывать ошибку, как показано выше.
Есть два ответа: сначала используется параметр "sep"
>>> print(*names, sep = ', ')
Другой ниже
>>> print(', '.join(names))
Это то, что вам нужно
", ".join(names)
Вам нужно пройти через список и использовать end=" "
, чтобы сохранить его на одной строке
names = ["Sam", "Peter", "James", "Julian", "Ann"]
index=0
for name in names:
print(names[index], end=", ")
index += 1
','.join(list)
будет работать, только если все элементы в списке являются строками. Если вы хотите преобразовать список чисел в строку через запятую. такие как a = [1, 2, 3, 4]
в '1,2,3,4'
то вы можете либо
str(a)[1:-1] # '1, 2, 3, 4'
или же
str(a).lstrip('[').rstrip(']') # '1, 2, 3, 4'
хотя это не удалит вложенный список.
Чтобы преобразовать его обратно в список
a = '1,2,3,4'
import ast
ast.literal_eval('['+a+']')
#[1, 2, 3, 4]
Я не знаю, эффективен ли он, как и другие, но простая логика всегда работает:
import sys
name = ["Sam", "Peter", "James", "Julian", "Ann"]
for i in range(0, len(names)):
sys.stdout.write(names[i])
if i != len(names)-1:
sys.stdout.write(", ")
Вывод:
Сэм, Питер, Джеймс, Джулиан, Энн
l.sort(key= abs, reverse = True)
Списки могут быть отсортированы с помощью метода sort()
. И метод сортировки имеет параметр, называемый ключом, который вы можете передать функции. Используя этот параметр, ваш список будет упорядочен не по значениям списка, а по значениям вашей функции в списке.
В вашем случае вы должны использовать функцию abs()
, которая будет возвращать абсолютное значение ваших элементов списка. Итак, ваш список >>>l = [1,-5,10,6,3,-4,-9]
будет отсортирован, как это было >>>[abs(1),abs(-5),abs(10),abs(6),abs(3),abs(-4),abs(-9)]
Что должно быть: >>> [1 ,-4 ,-5 ,6 ,-9 ,10]
Чтобы упорядочить от самого большого до самого маленького, используйте также параметр reverse=True
.
Следующая функция будет принимать список и возвращать строку элементов списков. Это может быть использовано для регистрации или печати.
def listToString(inList):
outString = ''
if len(inList)==1:
outString = outString+str(inList[0])
if len(inList)>1:
outString = outString+str(inList[0])
for items in inList[1:]:
outString = outString+', '+str(items)
return outString