You are currently viewing Python – Извлекает значения i-го столбца из значений j-го столбца

Python – Извлекает значения i-го столбца из значений j-го столбца

Иногда при работе с матрицей Python у нас может возникнуть проблема, при которой нам нужно извлечь значения i-го столбца из сравнения значений из j-го столбца. Такого рода проблемы могут возникать в таких областях, как школьное программирование или веб-разработка. Давайте обсудим некоторые способы, с помощью которых эта задача может быть выполнена.

Ввод : 
test_list = [[4, 5, 6], [2, 5, 7], [9, 8, 2], [10, 2, 6]], search_list = [4, 9], search_idx = 0, ext_idx = 2
Вывод : [6, 2]
Вход : test_list = [[4, 5, 6], [2, 5, 7], [9, 8, 2], [10, 2, 6]], search_list = [2, 6], search_idx = 2, ext_idx = 0
Выход : [4, 9, 10]

Метод № 1 : Использование цикла

Это грубый способ решения этой проблемы. При этом мы перебираем каждую строку и сравниваем j-й столбец с элементами списка, если таковые имеются, извлекаем i-й элемент.

# Python3 code to demonstrate working of
# Extract ith column values from jth column values
# Using loop

# initializing list
test_list = [[4, 5, 6], [2, 5, 7], [9, 8, 2], [10, 2, 6]]

# printing original list
print("The original list is : " + str(test_list))

# initializing list
search_list = [5, 2]

# initializing search index
search_idx = 1

# initializing extract index
ext_idx = 2

# Extract ith column values from jth column values
# Using loop
res = []
for sub in test_list:
	if sub[search_idx] in search_list:
		res.append(sub[ext_idx])
	
# printing result
print("The extracted elements : " + str(res))

Выход:

Исходный список таков : [[4, 5, 6], [2, 5, 7], [9, 8, 2], [10, 2, 6]]
Извлеченные элементы : [6, 7, 6]

Метод № 2 : set() + list comprehension

Для решения этой проблемы можно использовать комбинацию вышеперечисленных функций. В этом случае мы выполняем задачу извлечения элементов аналогично описанному выше методу, просто используя стенографию. Кроме того, для уменьшения первоначального поиска данных список поиска преобразуется в set (), чтобы удалить дубликаты.

# Python3 code to demonstrate working of
# Extract ith column values from jth column values
# Using set() + list comprehension

# initializing list
test_list = [[4, 5, 6], [2, 5, 7], [9, 8, 2], [10, 2, 6]]

# printing original list
print("The original list is : " + str(test_list))

# initializing list
search_list = [5, 2]

# initializing search index
search_idx = 1

# initializing extract index
ext_idx = 2

# Extract ith column values from jth column values
# Using set() + list comprehension
temp = set(search_list)
res = [sub[ext_idx] for sub in test_list if sub[search_idx] in search_list]
	
# printing result
print("The extracted elements : " + str(res))

Выход:

Исходный список таков : [[4, 5, 6], [2, 5, 7], [9, 8, 2], [10, 2, 6]]
Извлеченные элементы : [6, 7, 6]