Eu diria que a solução mais simples é descompactar dois intervalos em uma lista usando o *operador de descompactação:
>>> [*range(6, 10), *range(-9, -5)]
[6, 7, 8, 9, -9, -8, -7, -6]
Além de ser a resposta mais curta proposta até agora, também é a que apresenta melhor desempenho, porque constrói apenas uma lista única e não envolve chamadas de função além dos dois rangesegundos.
Eu verifiquei isso testando todas as respostas desta pergunta usando o timeitmódulo:
Identificação da resposta Método timeit result
-------------------------------------------------- ------------------------------------------------
(em questão) [x para x no intervalo (6,10)] + [y para y no intervalo (-9, -5)] 0,843 usec por loop
(esta resposta) [* intervalo (6, 10), * intervalo (-9, -5)] 0,509 usec por loop
61348876 [y para x no intervalo (6,10) para y em (x, -x)] 0,754 usec por loop
61349149 list (range_with_negatives (6, 10)) 0.795 usec por loop
61348914 list (itertools.chain (intervalo (6, 10), intervalo (-9, -5))) 0,709 usec por loop
61366995 [sinal * x para sinal, x em itertools.product ((- 1, 1), intervalo (6, 10))]] 0,899 usec por loop
61371302 list (intervalo (6, 10)) + list (intervalo (-9, -5)) 0,729 usec por loop
61367180 list (range_with_negs (6, 10)) 1,95 usec por loop
(timeit testado com o Python 3.6.9 no meu próprio computador (especificações médias))