Найти похожие ответы здесь: http://sickprogrammersarea.blogspot.in/2014/03/technical-interview-questions-on-c_6.html
Нарезка означает, что данные, добавленные подклассом, отбрасываются, когда объект подкласса передается или возвращается по значению или из функции, ожидающей объект базового класса.
Объяснение: Рассмотрим следующее объявление класса:
class baseclass
{
...
baseclass & operator =(const baseclass&);
baseclass(const baseclass&);
}
void function( )
{
baseclass obj1=m;
obj1=m;
}
Поскольку функции копирования в базовом классе ничего не знают о производной, только копируется только базовая часть производного. Это обычно называют срезанием.
Использование map
для его побочных эффектов (например, вызов функции), когда вас не интересуют возвращенные значения, нежелательно даже в Python2.x. Если функция возвращает None
, но повторяет миллион раз - вы бы создали список из миллиона None
s, чтобы отменить его. Правильный способ - либо использовать цикл for и loop:
for row in data:
writer.writerow(row)
, либо, как позволяет модуль csv
, использовать:
writer.writerows(data)
Если по какой-то причине вы действительно, действительно хотел использовать map
, тогда вы можете использовать рецепт consume
из itertools и сгенерировать нуль длины, например:
from collections import deque
deque(map(writer.writerow, data), maxlen=0)
Если вы не заботитесь о возвращаемом значении, то map
не лучший инструмент для задания. Простой for
был бы лучше:
for d in data:
writer.writerow(d)
Это отлично работает в Python 2.x и 3.x. Обратите внимание, что map
полезна, когда вы хотите создать новый список, если вы переходите по итерируемому только для эффекта, а затем используйте for
.
Вы можете установить нулевую длину deque , чтобы сделать это:
with open("output.csv", "w") as f:
writer = csv.writer(f)
collections.deque(map(writer.writerow, data),0)
Это то же самое, что и рецепт itertools.consume (iterator, None). Он функционально исчерпывает итератор, не создавая список.
Вы также можете просто использовать рецепт потребления из itertools.
Но цикл более читабельный и Pythonic для меня, но YMMV.