Прежде всего, для присоединения к спискам вы можете использовать простой оператор +
:
>>> l1 = [1, 2, 3]
>>> l2 = [4, 5, 6]
>>> merged = l1 + l2
>>> print(merged)
[1, 2, 3, 4, 5, 6]
Теперь для сортировки используйте встроенную в Python sort()
функцию:
В списках Python есть встроенный метод list.sort (), который изменяет список
на месте.
По умолчанию sort () не требует никаких дополнительных параметров. Тем не менее, это
имеет два необязательных параметра:
reverse - если true, отсортированный список переворачивается (или сортируется в
По убыванию)
ключ - функция, которая служит ключом для сортировки
сравнение
>>> l1 = [1, 2, 3]
>>> l2 = [4, 5, 6]
>>> merged = l2 + l1
>>> print(merged)
[4, 5, 6, 1, 2, 3]
>>> merged.sort(key=int)
>>> print(merged)
[1, 2, 3, 4, 5, 6]
Редактировать
@ Вышеупомянутое решение Мюррея работает просто отлично, но оно не подходит для вашего варианта использования, так как в ваших текстовых файлах есть строка с похожим списком:
Это numbers1.txt: [0, 4, 6, 6, 22, 23, 44] и это numbers2.txt: [1, 4, 5, 6, 7, 22, 777] - Мюррей 1 час назад
Теперь, когда вы читаете файл как list1/list2
, на самом деле вы получите список с одним элементом, который является строкой.
>>> with open("numbers1.txt", "r") as f:
... print(list1)
... print(type(list1))
... print(len(list1))
... print(type(list1[0]))
...
['[0, 4, 6, 6, 22, 23, 44]']
<type 'list'>
1
<type 'str'>
Чтобы добавить эти числа из файла, вам нужно сначала проанализировать их. Это может быть достигнуто следующим образом (в зависимости от вашего конкретного варианта использования окончательное решение может отличаться):
$ cat numbers1.txt
[0, 4, 6, 6, 22, 23, 44]
$ cat numbers2.txt
[1, 4, 5, 6, 7, 22, 777]
$ cat test.py
files = ['numbers1.txt', 'numbers2.txt']
merged = []
for f in files:
with open(f,'r') as lines:
for line in lines:
for num in line.rstrip().strip('[]').split(', '):
merged.append(int(num))
print(merged)
merged.sort()
print(merged)
$ python test.py
[0, 4, 6, 6, 22, 23, 44, 1, 4, 5, 6, 7, 22, 777]
[0, 1, 4, 4, 5, 6, 6, 6, 7, 22, 22, 23, 44, 777]
$ python3 test.py
[0, 4, 6, 6, 22, 23, 44, 1, 4, 5, 6, 7, 22, 777]
[0, 1, 4, 4, 5, 6, 6, 6, 7, 22, 22, 23, 44, 777]
Теперь позвольте мне разбить этот код на части:
- Прежде всего, открыть файл (ы). Я сделал это с помощью цикла for, поэтому мне не нужно повторять
with open...
каждый раз, когда я хочу что-то открыть (это проще и код более читабелен).
- Читать все строки из файла. (Я предполагал, что ваш файл может иметь более одной строки со списком, подобным строке)
- Разбор каждой строки и добавление в список.
line.rstrip()
- удалить завершающий перевод строки
.strip('[]')
- убрать квадратные скобки из строки
.split(', ')
- разделить строку запятой и пробелом, чтобы получить массив строковых символов
merged.append(int(num))
для каждого символа разберите его на int и добавьте в список.
- Последний, но не менее важный список сортировки.