Мне нужно проверить, является ли list1 подписок для list2 (True, если любое целое число в списке2, которое является общим с list1, находится в том же порядке индексов, что и в списке1)
blockquote>Ваш код не работает, потому что, как только элемент списка в ls1 не встречается в ls2, он немедленно вернет False.
Это создает два списка, которые содержат только общие элементы (но в их первоначальный порядок), а затем возвращает True, когда они одинаковы:
def sublist(lst1, lst2): ls1 = [element for element in lst1 if element in lst2] ls2 = [element for element in lst2 if element in lst1] return ls1 == ls2
edit: вариант с эффективностью памяти:
def sublist(ls1, ls2): ''' >>> sublist([], [1,2,3]) True >>> sublist([1,2,3,4], [2,5,3]) True >>> sublist([1,2,3,4], [0,3,2]) False >>> sublist([1,2,3,4], [1,2,5,6,7,8,5,76,4,3]) False ''' def get_all_in(one, another): for element in one: if element in another: yield element for x1, x2 in zip(get_all_in(ls1, ls2), get_all_in(ls2, ls1)): if x1 != x2: return False return True
Я не знаю, каков ответ на мой вопрос, но я нашел другой подход / решение.
Итак, проблема решена.
Старые темы никогда не умирают ...
Я на OSX Yosemite 10.10.5, и установил свой собственный php, в настоящее время 5.6.1, и хочу обновить до 5.6.13 - столкнулся с той же ошибкой сразу после imap.
Увидел эту ветку и запустил brew install map-uw
, затем запустил configure
, основываясь на моем существующем выводе phpinfo
.
./configure \
--prefix=/usr/local/php5 \
--with-apxs2=/usr/sbin/apxs \
--with-config-file-scan-dir=/usr/local/php5/php.d \
--with-openssl=/usr \
--with-zlib=/usr \
--with-zlib-dir=/usr \
--with-gd \
--with-ldap \
--with-xmlrpc \
--enable-exif \
--enable-soap \
--enable-wddx \
--enable-ftp \
--enable-sockets \
--with-bz2=/usr \
--enable-zip \
--enable-shmop \
--enable-sysvsem \
--enable-sysvshm \
--enable-sysvmsg \
--enable-mbstring \
--enable-bcmath \
--enable-calendar \
--with-mhash \
--enable-fpm \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-pcntl \
--enable-dtrace \
--enable-opcache \
--disable-phpdbg \
--with-icu-dir=/usr/local/php5 \
--with-mssql=shared,/usr/local/php5 \
--with-pdo-dblib=shared,/usr/local/php5 \
--with-libxml-dir=shared,/usr/local/php5 \
--with-xsl=shared,/usr/local/php5 \
--with-imap=shared,/usr/local/Cellar/imap-uw/2007f \
--with-kerberos=/usr \
--with-imap-ssl=/usr \
--with-gettext=/usr/local/php5 \
--with-curl=shared,/usr/local/php5 \
--with-png-dir=/usr/local/php5 \
--with-jpeg-dir=/usr/local/php5 \
--enable-gd-native-ttf \
--with-freetype-dir=/usr/local/php5 \
--with-pgsql=shared,/usr/local/php5 \
--with-pdo-pgsql=shared,/usr/local/php5 \
--with-mcrypt=shared,/usr/local/php5 \
--with-tidy=/usr/local/php5 \
--with-gmp=shared,/usr/local/php5 \
--with-readline=shared,/usr/local/php5
Затем make
. И, похоже, работает нормально.
Если у вас есть RPM «libc-client-devel» или другой пакет в вашем репозитории ОС, установите его.
Это обеспечит библиотеку c-client и файлы заголовков, которые нужны PHP для поддержки IMAP.
Для тех, у кого такая же ошибка в докере:
RUN apt-get update && apt-get install -y libc-client-dev libkrb5-dev && rm -r /var/lib/apt/lists/*
RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
&& docker-php-ext-install imap
ошибку можно исправить, удалив поддержку IMAP, удалив эти строки
--with-imap=/usr/local/imap-2007
--with-imap-ssl
Установите imap перед установкой php.
brew install imap-uw
, затем
brew install php55 --with-fpm --with-imap --without-apache - with-debug
Опция --with-imap должна работать нормально.
Я установил следующий пакет, и он работает:
uw-imap-devel
Запустите эту команду в CentOS 7. х:
yum -y install uw-imap-devel
Эта же проблема возникла у меня в Fedora при попытке компилировать PHP 5.5.0.
Проблема связана с параметром конфигурации '--with-imap'
.
Чтобы решить эту проблему, я скомпилировал свою собственную версию imap из последнего источника (в настоящее время imap-2007f) и для этого мне пришлось установить некоторые предварительные условия. На федоре я так и сделал ...
yum install openssl openssl-devel pam-devel
wget ftp://ftp.cac.washington.edu/imap/imap-2007f.tar.gz
tar zxvf imap-2007f.tar.gz
Затем мне пришлось создать мягкую ссылку, чтобы компилятор мог найти библиотеки. В моем случае я сделал следующее:
mkdir /usr/local/ssl
ln -s /usr/include /usr/local/ssl/include
и затем скомпилировал:
cd imap-2007f
make lnp SSLTYPE=unix EXTRACFLAGS=-fPIC
Затем я смог скомпилировать PHP, добавив исходный путь imap к параметру config следующим образом:
/path/to/php/src> ./configure ...other_params... '--with-imap=/path/to/imap-2007f' '--with-imap-ssl'
make
make install