Індекс розбиття та маніпулювання списком Python

Моє запитання виглядає простим, але для початківця до пітона, як і я, це починає надто складно для мене, тому ось ситуація:

Мені потрібно взяти такий список:

L = [(a, b, c), (d, e, d), (etc, etc, etc), (etc, etc, etc)]

і зробити кожен індекс окремим списком, щоб я міг витягувати елементи з кожного конкретного індексу. Проблема в тому, що список, який я насправді працює, містить сотні індексів, таких як вище, і я не можу зробити щось подібне:

L_new = list(L['insert specific index here'])

для кожного, що означало б заповнення пам'яті сотнями списків, що відповідають індивідуальним індексам першого списку, і це буде занадто багато часу і споживає пам'ять з моєї точки зору. Отже, моє запитання полягає в тому, як я можу відокремити ці показники, а потім витягувати окремі частини з них без створення сотень окремих списків (принаймні до того моменту, коли мені не доведеться створювати сотні окремих рядків).

3
Для цього вам нічого не потрібно робити. Ви можете просто додати інший індекс, і він буде працювати. L [0] [0] дасть a, L [0] [1] дасть b, L [2] [1] дасть тощо
додано Автор Slater Victoroff, джерело

10 Відповіді

Я міг би неправильно тлумачити своє запитання, але я схиляюся сказати, що вам насправді не потрібно нічого робити, щоб мати змогу індексувати свої кортежі. Дивіться мій коментар, але: L [0] [0] дасть "a" , L [0] [1] code> "b" , L [2] [1] надасть "etc" та ін ...

Якщо ви дійсно хочете, щоб чистий спосіб перетворити це в список списків, ви можете використати усвідомлення списку:

cast = [list(entry) for entry in L]

У відповідь на ваш коментар: якщо ви хочете отримати доступ до різних аспектів, я б запропонував зрозуміти список. Для вашого коментаря конкретно:

crosscut = [entry[0] for entry in L]

У відповідь на коментар 2: це багато в чому є частиною дійсно корисної операції під назвою розрізання. Спеціально для виконання наведеної операції ви зробите це:

multiple_index = [entry[0:3] for entry in L]

Залежно від ваших уподобань для читання існує декілька можливостей:

list_of_lists = []
for sublist in L:
    list_of_lists.append(list(sublist))

iterator = iter(L)
for i in range(0,iterator.__length_hint__()):
    return list(iterator.next())
    # Or yield list(iterator.next()) if you want lazy evaluation
3
додано
Це гарний початок, тому що я не знав, що це можна зробити в python, тому я дякую вам за це набагато знання, але я все ще цікаво, як мені ефективно зателефонувати (наприклад) L [:] [0] , чи буде це працювати для витягування * з усіх індексів у цьому списку? * (а - це лише приклад, вважаючи, що це перший індекс у дужках)
додано Автор ImmortalxR, джерело
Дуже спасибі, повністю вирішивши проблему з цим оновленим відповіддю! Ну, по-перше, ха-ха, чи можу я присвоїти декілька записів для перехресного тексту, таких як [запис [0, 1, 2] для запису в L]?
додано Автор ImmortalxR, джерело
Дякуємо за редакцію, і мені шкода, що я не зрозумів це, але я намагаюся отримати доступ до щось ближче до цього: [запис [0, 8, 13] для запису в L], що означає, що фрагмент не буде йди з 1-3, але насправді має бути окремими індексами, спасибі за будь-яку допомогу, яку ви можете дати, і дали.
додано Автор ImmortalxR, джерело
@ user2494237 Див. оновлений відгук
додано Автор Slater Victoroff, джерело

Я міг би неправильно тлумачити своє запитання, але я схиляюся сказати, що вам насправді не потрібно нічого робити, щоб мати змогу індексувати свої кортежі. Дивіться мій коментар, але: L [0] [0] дасть "a" , L [0] [1] code> "b" , L [2] [1] надасть "etc" та ін ...

Якщо ви дійсно хочете, щоб чистий спосіб перетворити це в список списків, ви можете використати усвідомлення списку:

cast = [list(entry) for entry in L]

У відповідь на ваш коментар: якщо ви хочете отримати доступ до різних аспектів, я б запропонував зрозуміти список. Для вашого коментаря конкретно:

crosscut = [entry[0] for entry in L]

У відповідь на коментар 2: це багато в чому є частиною дійсно корисної операції під назвою розрізання. Спеціально для виконання наведеної операції ви зробите це:

multiple_index = [entry[0:3] for entry in L]

Залежно від ваших уподобань для читання існує декілька можливостей:

list_of_lists = []
for sublist in L:
    list_of_lists.append(list(sublist))

iterator = iter(L)
for i in range(0,iterator.__length_hint__()):
    return list(iterator.next())
    # Or yield list(iterator.next()) if you want lazy evaluation
3
додано
Це гарний початок, тому що я не знав, що це можна зробити в python, тому я дякую вам за це набагато знання, але я все ще цікаво, як мені ефективно зателефонувати (наприклад) L [:] [0] , чи буде це працювати для витягування * з усіх індексів у цьому списку? * (а - це лише приклад, вважаючи, що це перший індекс у дужках)
додано Автор ImmortalxR, джерело
Дуже спасибі, повністю вирішивши проблему з цим оновленим відповіддю! Ну, по-перше, ха-ха, чи можу я присвоїти декілька записів для перехресного тексту, таких як [запис [0, 1, 2] для запису в L]?
додано Автор ImmortalxR, джерело
Дякуємо за редакцію, і мені шкода, що я не зрозумів це, але я намагаюся отримати доступ до щось ближче до цього: [запис [0, 8, 13] для запису в L], що означає, що фрагмент не буде йди з 1-3, але насправді має бути окремими індексами, спасибі за будь-яку допомогу, яку ви можете дати, і дали.
додано Автор ImmortalxR, джерело
@ user2494237 Див. оновлений відгук
додано Автор Slater Victoroff, джерело

Я міг би неправильно тлумачити своє запитання, але я схиляюся сказати, що вам насправді не потрібно нічого робити, щоб мати змогу індексувати свої кортежі. Дивіться мій коментар, але: L [0] [0] дасть "a" , L [0] [1] code> "b" , L [2] [1] надасть "etc" та ін ...

Якщо ви дійсно хочете, щоб чистий спосіб перетворити це в список списків, ви можете використати усвідомлення списку:

cast = [list(entry) for entry in L]

У відповідь на ваш коментар: якщо ви хочете отримати доступ до різних аспектів, я б запропонував зрозуміти список. Для вашого коментаря конкретно:

crosscut = [entry[0] for entry in L]

У відповідь на коментар 2: це багато в чому є частиною дійсно корисної операції під назвою розрізання. Спеціально для виконання наведеної операції ви зробите це:

multiple_index = [entry[0:3] for entry in L]

Залежно від ваших уподобань для читання існує декілька можливостей:

list_of_lists = []
for sublist in L:
    list_of_lists.append(list(sublist))

iterator = iter(L)
for i in range(0,iterator.__length_hint__()):
    return list(iterator.next())
    # Or yield list(iterator.next()) if you want lazy evaluation
3
додано
Це гарний початок, тому що я не знав, що це можна зробити в python, тому я дякую вам за це набагато знання, але я все ще цікаво, як мені ефективно зателефонувати (наприклад) L [:] [0] , чи буде це працювати для витягування * з усіх індексів у цьому списку? * (а - це лише приклад, вважаючи, що це перший індекс у дужках)
додано Автор ImmortalxR, джерело
Дуже спасибі, повністю вирішивши проблему з цим оновленим відповіддю! Ну, по-перше, ха-ха, чи можу я присвоїти декілька записів для перехресного тексту, таких як [запис [0, 1, 2] для запису в L]?
додано Автор ImmortalxR, джерело
Дякуємо за редакцію, і мені шкода, що я не зрозумів це, але я намагаюся отримати доступ до щось ближче до цього: [запис [0, 8, 13] для запису в L], що означає, що фрагмент не буде йди з 1-3, але насправді має бути окремими індексами, спасибі за будь-яку допомогу, яку ви можете дати, і дали.
додано Автор ImmortalxR, джерело
@ user2494237 Див. оновлений відгук
додано Автор Slater Victoroff, джерело

Два способи використання внутрішніх списків:

for index, sublist in enumerate(L):
    # do something with sublist
    pass

або з ітератором

iterator = iter(L)
sublist = L.next() # <-- yields the first sublist

в обох випадках елементи sublist можна отримати за допомогою

  • прямий індекс
sublist[2]
  • ітерація
iterator = iter(sublist)
iterator.next()  # <-- yields first elem of sublist

for elem in sublist:
    # do something with my elem
    pass
2
додано

Два способи використання внутрішніх списків:

for index, sublist in enumerate(L):
    # do something with sublist
    pass

або з ітератором

iterator = iter(L)
sublist = L.next() # <-- yields the first sublist

в обох випадках елементи sublist можна отримати за допомогою

  • прямий індекс
sublist[2]
  • ітерація
iterator = iter(sublist)
iterator.next()  # <-- yields first elem of sublist

for elem in sublist:
    # do something with my elem
    pass
2
додано

Два способи використання внутрішніх списків:

for index, sublist in enumerate(L):
    # do something with sublist
    pass

або з ітератором

iterator = iter(L)
sublist = L.next() # <-- yields the first sublist

в обох випадках елементи sublist можна отримати за допомогою

  • прямий індекс
sublist[2]
  • ітерація
iterator = iter(sublist)
iterator.next()  # <-- yields first elem of sublist

for elem in sublist:
    # do something with my elem
    pass
2
додано

У вас є список наборів, доступ до них, як список списків

L[3][2]

отримає другий елемент з 3-го кортежу у вашому списку L

2
додано

У вас є список наборів, доступ до них, як список списків

L[3][2]

отримає другий елемент з 3-го кортежу у вашому списку L

2
додано

У вас є список наборів, доступ до них, як список списків

L[3][2]

отримає другий елемент з 3-го кортежу у вашому списку L

2
додано

У вас є список наборів, доступ до них, як список списків

L[3][2]

отримає другий елемент з 3-го кортежу у вашому списку L

2
додано
ІТ КПІ - Python
ІТ КПІ - Python
625 учасників

Канал обговорень про всякі штуки зі світу пайтону. Прохання: 0. мати повагу одне до одного; 1. не матюкатися в сторону людей; 2. не захламляти тред повідомленнями по одному слову;