Переформатировать массив, чтобы сделать одномерный массив

Конкретная проблема уже решена в предыдущих ответах, поэтому я обращусь к общей идее использования условностей внутри понятий списка.

Вот пример, показывающий, как условные обозначения могут быть записаны внутри понимания списка :

X = [1.5, 2.3, 4.4, 5.4, 'n', 1.5, 5.1, 'a']     # Original list

# Extract non-strings from X to new list
X_non_str = [el for el in X if not isinstance(el, str)]  # When using only 'if', put 'for' in the beginning

# Change all strings in X to 'b', preserve everything else as is
X_str_changed = ['b' if isinstance(el, str) else el for el in X]  # When using 'if' and 'else', put 'for' in the end

Обратите внимание, что в первом понимании списка для X_non_str порядок:

значение для выражения 1 , если expression2

и в последнем понимании списка для X_str_changed порядок:

value1 , если expression1 else значение2 для expression2

Мне всегда трудно помнить, что значение 1 должно быть раньше, если и значение2 должно быть после. Моя голова хочет, чтобы оба были либо до, либо после.

Я предполагаю, что он создан так, потому что он похож на обычный язык, например. «Я хочу остаться внутри, если идет дождь, иначе я хочу выйти на улицу»

0
задан vishuB 22 January 2019 в 04:51
поделиться