powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python получить размерность кортежа?
11 сообщений из 11, страница 1 из 1
Python получить размерность кортежа?
    #39715146
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На вход функции подается кортеж. Он может быть разной размерности.
Такой С=(1,2,6,7,9,0,0, .........5,6,87) и так len до 100 тыщ значений.
Или такой - С=((1,2,6,7,9,0,0, .........5,6,87),(1,2,6,7,9,0,0, .........5,6,87),(1,2,6,7,9,0,0, .........5,6,87), ........) тоже до 100 тыщ строк.
В первом случае доступ к С[i], во втором C[j][i].
Можно-ли напрямую определить размерность кортежа?
Во втором случае, да - len(C[0]) - не вопрос. С одномерным кортежем идет ошибка - через try делать?
А напрямую определить как-то можно, без try или циклов?

"Есть многое на свете, друг Горацио, что и не сразу в голову придет."
М. Твен "Приключения Геккельбери Финна"
...
Рейтинг: 0 / 0
Python получить размерность кортежа?
    #39715173
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через try все нормально получается. Но все-таки интересно, прямые методы имеются?
...
Рейтинг: 0 / 0
Python получить размерность кортежа?
    #39715175
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, вот так, собственно
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
a=((1,2,3,45,5,6),(3,4,5,6,7),(3,4,65,7,8,9),)
b=(1,2,3,)

def dimension(c):
    try:
        res=len(c[0])
        return res
    except:
        return 1

d=dimension(a)
print('Answer= '+ str(b))


.
...
Рейтинг: 0 / 0
Python получить размерность кортежа?
    #39715184
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для данного случая можно как-то так попробовать
Код: python
1.
2.
def dimension(c):
    return 1 if type(c[0]) is int else len(c)
...
Рейтинг: 0 / 0
Python получить размерность кортежа?
    #39715199
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, Да, только
Код: python
1.
2.
def dimension(c):
    return 1 if type(c[0]) is int else len(c[0])
...
Рейтинг: 0 / 0
Python получить размерность кортежа?
    #39715207
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,

Верно, тут Вы правы.
Для более общего случая, вероятно, лучше делать проверку типа не на целое, а на кортеж с соответствующей перестановкой левой и правой части. Ну, на случай если строка в c[0] окажется или флоат.
...
Рейтинг: 0 / 0
Python получить размерность кортежа?
    #39715220
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, да, недосмотрел. int там действительно не катит. В кортеже зоопарк типов.
Тогда надо по другому возвращать. Для int ->0, для кортежей размерность. Иначе return 1 неоднозначна.
Пока try пусть поработает.) Потом переделаю.
...
Рейтинг: 0 / 0
Python получить размерность кортежа?
    #39715222
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA Для int ->0, для кортежей размерность. Иначе return 1 неоднозначна.
ошибся, конечно же не для инт, а для вложенного кортежа.
...
Рейтинг: 0 / 0
Python получить размерность кортежа?
    #39715227
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA, тьфу ты, вечер, однако. 0, если нет вложенного кортежа.
...
Рейтинг: 0 / 0
Python получить размерность кортежа?
    #39715267
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAВ кортеже зоопарк типов.В смысле, в "корневом" кортеже могут быть в куче строки, числа, кортежи разной длины (которые тоже из всякого состоят!) и т.д.?
Если так, то получается какой-то общий случай, для которого и исходный пример не годится, и сама постановка вопроса не вполне понятна становится.
...
Рейтинг: 0 / 0
Python получить размерность кортежа?
    #39715283
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, там ничего страшного. Все вложенные кортежи одинаковой длины, по расположению типов все совпадают - типа строки из БД.
Но возможны данные только из одного столбца, без вложенных кортежей. В этом одном столбце м.б. int or float, ничего другого.
Единственное, что не подумал, это ((1,),(55,).......(67,),), но уже решил этот вопрос.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python получить размерность кортежа?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]