for f, b in zip(foo, bar): print(f, b)
zip
останавливается, когда останавливается более короткое числоfoo
илиbar
.В Python 2,
zip
возвращает список кортежей. Это нормально, когдаfoo
иbar
не массивны. Если они оба массивны, то формированиеzip(foo,bar)
является излишне массивной временной переменной и должно быть заменено наitertools.izip
илиitertools.izip_longest
, которое возвращает итератор вместо списка.import itertools for f,b in itertools.izip(foo,bar): print(f,b) for f,b in itertools.izip_longest(foo,bar): print(f,b)
izip
останавливается при исчерпанииfoo
илиbar
.izip_longest
останавливается, когда обаfoo
иbar
исчерпаны. Когда более короткий итератор (ы) исчерпан,izip_longest
дает кортеж сNone
в позиции, соответствующей этому итератору. Вы также можете установить другойfillvalue
, кромеNone
, если хотите.В Python 3,
zip
возвращает итератор кортежей, напримерitertools.izip
в Python2. Чтобы получить список кортежей, используйтеlist(zip(foo, bar))
. И чтобы застегнуть молнию до тех пор, пока оба итератора не будут исчерпаны, вы будете использовать itertools.zip_longest .Обратите внимание также, что
zip
и егоzip
-подобный brethen могут принять произвольное число итераций в качестве аргументов. Например,for num, cheese, color in zip([1,2,3], ['manchego', 'stilton', 'brie'], ['red', 'blue', 'green']): print('{} {} {}'.format(num, color, cheese))
печатает
1 red manchego 2 blue stilton 3 green brie
Если вам нужно представить неизвестные данные в столбце, вы сделаете его нулевым. Если вы всегда будете иметь данные в столбце, лучше сделать его недействительным, так как
Просто, чтобы уточнить вашу точку ... Пустые строки не устанавливаются в NULL в любой базе данных, которая соответствует стандарту ANSI для SQL. NULL - это не то же самое, что и пустые строки. Столбцам с явным значением NULL или без значения присваивается значение NULL.
Вот несколько преимуществ использования NULL. Вы сохраняете пространство для бит, используемого для дифференциации значения NULL. Вы также придаете смысл выражениям, таким как «field & lt;> value» более понятным. Кроме того, некоторые базы данных не могут оптимизировать такие выражения, как «coalesce (field, '') & lt;> value", чтобы использовать индекс.
Иногда нужны NULL, особенно если вы вставляете неполные записи. И поскольку столбцы по умолчанию позволяют использовать NULL, лень гарантирует, что почти все столбцы во всех базах данных принимают значения NULL.
NOT NULL - это ограничение, гарантирующее наличие значения в столбце для каждой строки. Это правильная практика при правильном применении, потому что при выполнении операций, подобных объединениям, необходимо соблюдать осторожность при использовании нулевых значений, поскольку ни один ни один не равен никому другому [
Если для поля установлено значение NOT NULL, оно не может быть пустым. Это означает, что вам нужно указать значение для этого поля при вставке записи.
NOT NULL
обязано указывать конкретное значение для поля.
используйте NULL
, когда вам нужно сохранить пустые значения для поля.
используйте NOT NULL
, если вы хотите запретить пустые значения для поля. Дополнительная цель, что большинство БД медленно работают с NULL
-значениями. Поэтому, если вы сомневаетесь в использовании NOT NULL
.