Использование:
margin-left: 50%;
Или:
position:relative;
left:50%;
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
Вы хотите функцию zip
.
for (f,b) in zip(foo, bar):
print "f: ", f ,"; b: ", b
itertools.izip
, если у вас есть большое количество элементов.
– Georg Schölly
2 November 2009 в 22:35
zip-функция решает проблему Docs: Функция ZIP-библиотеки
AIM: Чтобы поставить выходной бок о бок Проблема:
#value1 is a list
value1 = driver.find_elements_by_class_name("review-text")
#value2 is a list
value2 = driver.find_elements_by_class_name("review-date")
for val1 in value1:
print(val1.text)
print "\n"
for val2 in value2:
print(val2.text)
print "\n"
Выход: обзор1 обзор2 обзор3 дата1 дата2 дата3
Решение:
for val1, val2 in zip(value1,value2):
print (val1.text+':'+val2.text)
print "\n"
Результат: review1: date1 review2: date2 review3: date3
Встроенный zip
делает именно то, что вы хотите. Если вы хотите использовать те же самые итерации вместо списков, вы можете посмотреть на itertools.izip, который делает то же самое, но дает результаты по одному.
def ncustom_zip(seq1,seq2,max_length):
length= len(seq1) if len(seq1)>len(seq2) else len(seq2) if max_length else len(seq1) if len(seq1)<len(seq2) else len(seq2)
for i in range(length):
x= seq1[i] if len(seq1)>i else None
y= seq2[i] if len(seq2)>i else None
yield x,y
l=[12,2,3,9]
p=[89,8,92,5,7]
for i,j in ncustom_zip(l,p,True):
print i,j
for i,j in ncustom_zip(l,p,False):
print i,j
Вы должны использовать функцию zip '. Вот пример, как ваша собственная функция zip может выглядеть как
def custom_zip(seq1, seq2):
it1 = iter(seq1)
it2 = iter(seq2)
while True:
yield next(it1), next(it2)
itertools.zip_longest
вместоitertools.izip_longest
(в основномzip...
вместоizip...
в модулеitertools
). Это редактирование одного персонажа, иначе я бы отредактировал супер незначительную коррекцию в вашем ответе. – Michael A 15 October 2014 в 21:04izip
(хотяizip
/zip
выглядит намного чище)? – armundle 14 March 2016 в 20:23zip
иzip
-like изitertools
принимают любое количество итераций, а не только 2? Этот вопрос сейчас канонический, и ваш ответ - единственное, что стоит обновить. – vaultah 11 July 2016 в 15:01for i, (f, b) in enumerate(zip(foo, bar))
. – unutbu 6 March 2018 в 20:20