2016-08-31 2 views
-1

Я новичок в Python ..Использование Python Изменение порядка A List

У меня есть список (names.txt) который четыре названия:

  • Colin
  • Gary
  • Gibby
  • Росс

Я хотел бы вывести список из файла, а затем изменить порядок имен на одно место и сохранить этот вывод в исходном файле «names.txt».

т.е.

Run1 будет: Колин Гэри Gibby Росс

RUN2 будет: Гэри Gibby Росс Colin

RUN3 будет: Gibby Росс Colin Гэри

. ...и так далее.

код у меня до сих пор в состоянии взять файл и вывод в виде списка, но я не знаю, как переместить заказ на 1-е место и сохранить его еще раз:

#!/usr/bin/python 

# Open a file 
with open ('names.txt', 'r') as f: 
    list1 = f.read().splitlines() 
    for item1 in list1[0:4]: 
    print (item1) 
f.close() 

Все оцененная помощь , Благодарю.

+0

'MyList = MyList [1:] + MyList [: 1] ' – khelwood

ответ

1

Просто напечатайте все, начиная с индекса 1 в цикле. В индексе конца печати 0

for i in range(1:len(list1)): 
    print(list1[i]) 
print(list1[0]) 

Или, если вам нужно иметь его в новом списке:

list1 = list1[1:] + list1[:1] 
2

This детали ответа, как переместить список, используя collections.deque провозгласивших оптимизирован для «толкая и потянув за оба конца ». С этой целью я привел пример кода ниже для вашего удобства.

from collections import deque 
items = deque([1, 2]) 
items.append(3) # deque == [1, 2, 3] 
items.rotate(1) # The deque is now: [3, 1, 2] 
items.rotate(-1) # Returns deque to original state: [1, 2, 3] 
item = items.popleft() # deque == [2, 3] 
+0

@shravster Вы имеете в виду ответ, который я связал с моим сообщением? – Koga

+0

Не беспокойтесь, просто не хотелось путаницы. – Koga

0

Вы можете повернуть последовательность, подобную этой, используя нотацию среза.

def rotate(sequence, shift=1): 
    return sequence[-shift:] + sequence[:-shift] 

>>> rotate([1, 2, 3, 4]) 
[4, 1, 2, 3] 

>>> rotate('hello world', 5) 
'o worldhell' 

>>> rotate(['Colin', 'Gary', 'Gibby', 'Ross'], -1) 
['Gary', 'Gibby', 'Ross', 'Colin'] 

Эта rotate функция не мутировать исходную последовательность. Для очень длинных последовательностей и более высокой производительности вы можете проверить collections.deque из стандартной библиотеки. Тип последовательности deque может вращаться на месте в памяти и эффективно работать.

0

Это считывает ваш существующий файл names.txt и отображает его содержимое.Затем он изменяет порядок на 1 и записывает полученный список обратно в тот же файл:

with open('names.txt', 'r') as f: 
    list1 = f.read().splitlines() 
    print('\n'.join(list1)) 
    list1 = list1[1:] + list1[:1] 

with open('names.txt', 'w') as f: 
    f.write('\n'.join(list1)) 

run1

Colin 
Gary 
Gibby 
Ross 

RUN2

Gary 
Gibby 
Ross 
Colin 
Смежные вопросы