Другой необычный подход, который работает для гетеро- и однородных списков целых чисел:
def unusual_flatten(some_list: list) -> list:
cleaned_list = str(some_list).replace(("["), "").replace("]", "").split(",")
return [int(item) for item in cleaned_list]
Применение в списке примеров ...
l = [[1, 2, 3], [4, 5, 6], [7], [8, 9], 10]
unusual_flatten(l)
Результат:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Нет, нет способа Java
проверить все возможные пути кода для программы, чтобы определить, была ли инициализирована переменная или нет, поэтому она берет безопасный маршрут и предупреждает вас.
Нет, вам придется инициализировать вашу переменную, чтобы избавиться от этого.
Почему бы вам просто не использовать
void a ()
{
int x;
boolean b = false;
if (Math.random() < 0.5)
{
x = 0;
b = true;
x++;
}
if (b) {
//do something else which does not use x
}
}
В коде, почему вы хотите использовать x вне первого блока if, вся логика с участием x
может быть реализована в первом случае, если только блок, я не вижу случая, когда вам понадобится использовать другой if, чтобы использовать x.
EDIT: или вы также можете использовать:
void a ()
{
int x;
boolean b = (Math.random() < 0.5);
if (b) {
x=1
//do something
}
}
Есть один:
void a () {
if (Math.random() < 0.5) {
int x = 1;
}
}
Компилятор не отвечает за разработку и тестирование алгоритма. Вы.
Но, возможно, вам стоит предложить более практичный вариант использования. Ваш пример на самом деле не показывает, какова ваша цель.