Определите одну разницу в списке Python

... Не удалось загрузить файл или сборку «X» или одну из его зависимостей ...

blockquote>

Скорее всего, он не может загрузить другую зависимость.

вы можете попробовать проверить зависимости с помощью ходячего зависимостей.

Ie: http://www.dependencywalker.com/

Также проверьте конфигурацию сборки (x86 / 64)

Редактирование: У меня также была эта проблема, когда я копировал DLL в zip из «ненадежной» сетевой папки. Файл был заблокирован Windows и было создано исключение FileNotFoundException.

См. здесь: Обнаруженные библиотеки DLL, которые из Интернета и "заблокированы" по CASPOL

0
задан Ev. Kounis 17 January 2019 в 15:34
поделиться

4 ответа

Вы можете сначала проверить наиболее распространенное значение. После этого просмотрите список, чтобы увидеть, есть ли другое значение, и отследите его. Если позже вы найдете другое значение, которое отличается от самого распространенного, в списке не будет разницы.

list1 = [1,1,1,1,1,1,5,1,1,1]

def single_difference(lst):
    most_common = max(set(lst), key=lst.count)
    diff_idx = None
    diff_val = None
    for idx, i in enumerate(lst):
        if i != most_common:
            if diff_val is not None:
                return "No unique single difference"
            diff_idx = idx
            diff_val = i
    return (most_common, diff_val, diff_idx)

print(single_difference(list1))
0
ответ дан b9s 17 January 2019 в 15:34
поделиться

Вы можете использовать что-то вроде этого:

def odd_one_out(lst):
    s = set(lst)
    if len(s)!=2:  # see comment (1)
        return False
    else:
        return any(lst.count(x)==1 for x in s)  # see comment (2)

, которое для приведенных вами примеров дает:

print(odd_one_out(list1))  # True
print(odd_one_out(list2))  # False
print(odd_one_out(list3))  # True

Чтобы объяснить код, я бы использовал первый пример список, который вы предоставили [1,1,1,1,1,1,5,1,1,1].

(1) преобразование в set удаляет все дублирующиеся значения из вашего списка, оставляя вас с {1, 5} (в произвольном порядке). Если длина этого набора отличается от 2, ваш список не соответствует вашим требованиям, поэтому возвращается False

(2) Если предположить, что set имеет длину 2, что нам нужно проверить следующее: хотя бы одно из содержащихся в нем значений появляется только один раз в оригинале list. Это то, что делает any.

0
ответ дан Ev. Kounis 17 January 2019 в 15:34
поделиться

Вы можете использовать встроенные Counter из Типы высокопроизводительных контейнеров :

from collections import Counter
def is_single_diff(iterable):
    c = Counter(iterable)
    non_single_items = list(filter(lambda x: c[x] > 1, c))
    return len(non_single_items) == 1

Тесты

list1 = (1,1,1,1,1,1,5,1,1,1)
list2 = (6,7,4,4,4,1,6,7,6)
list3 = (8,8,8,8,9)

In: is_single_diff (list1)

Out: True

In: is_single_diff (list2)

Out: False

In: is_single_diff (list3)

Out: True

0
ответ дан madjaoue 17 January 2019 в 15:34
поделиться

Используйте уникальную numpy, она даст вам всю необходимую информацию.

myarray = np.array([1,1,1,1,1,1,5,1,1,1])
vals_unique,vals_counts = np.unique(myarray,return_counts=True)
0
ответ дан benbo 17 January 2019 в 15:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: