Więc teraz mam trzy listy:

list1 = [False if num1[i] == '0' else True for i in range(len(num1))]
list2 = [False if num2[i] == '0' else True for i in range(len(num2))]
tmp = [False for i in range(abs(len(list1)-len(list2)))]

I chcę połączyć listy w tych warunkach:

if len(list1) > len(list2):
    list2 = tmp + list2
else:
    list1 = tmp + list1

Czy jest jakiś sposób, że jestem w stanie wykonać wszystkie te procesy za pomocą rozumienia listy? Zwłaszcza, że if-else część podczas łączenia listy tmp za pomocą list1 i list2 (Python3.7)

-1
Warren Wang 26 luty 2019, 04:47

2 odpowiedzi

Najlepsza odpowiedź

W twoim przypadku list1 i list2 powinien mieć tę samą długość, co num1 i num2. Ponadto możesz trochę uprościć swoje oświadczenia:

result = [False] * abs(len(num1) - len(num2)) + [num != '0' for num in min(num2, num1, key=len)]

result będzie dowolną listą, którą chcesz dodać temp do. Zakłada się, że nie będziesz potrzebować obu list1 i list2 w przyszłości. Oczywiście możesz je łatwo skonstruować w razie potrzeby.

0
iz_ 26 luty 2019, 01:54

Być może możesz wziąć najdłuższą długość i wypełnić ją, jeśli chodzi na przykład:

list_length = max(len(num1), len(num2))
list1 = [i < len(num1) and num1[i] != '0' for i in range(list_length)]
list2 = [i < len(num2) and num2[i] != '0' for i in range(list_length)]

Uwaga Umożliwiam również uproszczone False if num2[i] == '0' else True do num2[i] != '0'.

0
nico 26 luty 2019, 01:53