Скорее попробуйте что-то вроде
public override string ToString()
{
return String.Format("Name : {0}, number {1}, date {2}, salary {3}",_name,_number,_date,_salary);
}
Но это не входит в класс
, поэтому
class Employee
{
private string _name;
private string _number;
private int _date;
private int _salary;
.....
public override string ToString()
{
return String.Format("Name : {0}, number {1}, date {2}, salary {3}",_name,_number,_date,_salary);
}
}
Посмотрите на String.Format Method
Заменяет каждый элемент формата в указанной строке текстовым эквивалентом значения соответствующего объекта.
blockquote>
Простой рекурсивный чек будет достаточно, и как можно раньше вернемся, мы предполагаем, что вход не является списком или содержит не-списки, он не пуст
def isEmpty(alist):
try:
for a in alist:
if not isEmpty(a):
return False
except:
# we will reach here if alist is not a iterator/list
return False
return True
alist = []
blist = [alist] # [[]]
clist = [alist, alist, alist] # [[], [], []]
dlist = [blist] # [[[]]]
elist = [1, isEmpty, dlist]
if isEmpty(alist):
print "alist is empty"
if isEmpty(dlist):
print "dlist is empty"
if not isEmpty(elist):
print "elist is not empty"
Вы можете еще больше его улучшить для проверки рекурсивного списка или отсутствия объектов списка, или может быть пустым dicts и т. д.
def isEmpty(a):
return all([isEmpty(b) for b in a]) if isinstance(a, list) else False
Просто.
Я не думаю, что есть очевидный способ сделать это в Python. Лучше всего было бы использовать рекурсивную функцию, подобную этой:
def empty(li):
if li == []:
return True
else:
return all((isinstance(sli, list) and empty(sli)) for sli in li)
Обратите внимание, что all
поставляется только с Python> = 2.5 и что он не будет обрабатывать бесконечно рекурсивные списки (например, a = []; a.append(a)
).
Простой код работает для любого итерабельного объекта, а не только для списков:
>>> def empty(seq):
... try:
... return all(map(empty, seq))
... except TypeError:
... return False
...
>>> empty([])
True
>>> empty([4])
False
>>> empty([[]])
True
>>> empty([[], []])
True
>>> empty([[], [8]])
False
>>> empty([[], (False for _ in range(0))])
True
>>> empty([[], (False for _ in range(1))])
False
>>> empty([[], (True for _ in range(1))])
False
Этот код делает предположение, что все, что может быть повторено, будет содержать другие элементы и не должно рассматриваться как лист в дереве". Если попытка выполнить итерацию по объекту не удалась, то это не последовательность и, следовательно, конечно, не пустая последовательность (при этом возвращается False
). Наконец, этот код использует тот факт, что all
возвращает True
, если его аргумент является пустой последовательностью.
map
не следует использовать в Python. all( empty(x) for x in seq )
звучит намного приятнее для меня ;-)
– Jochen Ritzel
20 October 2009 в 12:51
isEmpty([1])
терпит неудачу, это довольно проблема (не очень полезно иметь функцию для проверки пустого списка, если она работает только со списками, которые, как вы знаете, пусты). – Pierre Bourdon 20 October 2009 в 11:14return all(map(isListEmpty, inList)) if isinstance(inList, list) else False
:) – Stephan202 22 October 2009 в 09:45