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
Здесь вы можете обнаружить полное имя типа исключения, результат здесь дает System.Management.Automation.ArgumentTransformationMetadataException, как указано @Adrian Wright.
Clear-Host
try {
[xml]$xml = Get-Content "c:\Temp\1.cs" # line 2
}
catch {
# Discovering the full type name of an exception
Write-Host $_.Exception.gettype().fullName
Write-Host $_.Exception.message
}
System.Management.Automation.ArgumentTransformationMetadataException