Используйте понимание вложенного кортежа и isinstance
:
output = [tuple(j for j in i if not isinstance(j, str)) for i in ListTuples]
Вывод:
[(100,), (80,), (20,), (40,), (40,)]
Обратите внимание, что в кортежах есть запятые, чтобы отличать их от, например, (100)
, который идентичен 100
.
Существует много "класса, проект, объект является чем-то созданным из того проекта", но так как Вы попросили определенный пример с помощью Американского лося и Perl, я думал, что обеспечу тот.
В этом следующем примере мы идем, имеют класс под названием 'Хакер'. Класс (как проект) описывает то, что хакеры (их атрибуты) и что они могут сделать (их методы):
package Hacker; # Perl 5 spells 'class' as 'package'
use Moose; # Also enables strict and warnings;
# Attributes in Moose are declared with 'has'. So a hacker
# 'has' a given_name, a surname, a login name (which they can't change)
# and a list of languages they know.
has 'given_name' => (is => 'rw', isa => 'Str');
has 'surname' => (is => 'rw', isa => 'Str');
has 'login' => (is => 'ro', isa => 'Str');
has 'languages' => (is => 'rw', isa => 'ArrayRef[Str]');
# Methods are what a hacker can *do*, and are declared in basic Moose
# with subroutine declarations.
# As a simple method, hackers can return their full name when asked.
sub full_name {
my ($self) = @_; # $self is my specific hacker.
# Attributes in Moose are automatically given 'accessor' methods, so
# it's easy to query what they are for a specific ($self) hacker.
return join(" ", $self->given_name, $self->surname);
}
# Hackers can also say hello.
sub say_hello {
my ($self) = @_;
print "Hello, my name is ", $self->full_name, "\n";
return;
}
# Hackers can say which languages they like best.
sub praise_languages {
my ($self) = @_;
my $languages = $self->languages;
print "I enjoy programming in: @$languages\n";
return;
}
1; # Perl likes files to end in a true value for historical reasons.
Теперь, когда у нас есть наш класс Хакера, мы можем начать делать объекты Хакера:
#!/usr/bin/perl
use strict;
use warnings;
use autodie;
use Hacker; # Assuming the above is in Hacker.pm
# $pjf is a Hacker object
my $pjf = Hacker->new(
given_name => "Paul",
surname => "Fenwick",
login => "pjf",
languages => [ qw( Perl C JavaScript) ],
);
# So is $jarich
my $jarich = Hacker->new(
given_name => "Jacinta",
surname => "Richardson",
login => "jarich",
languages => [ qw( Perl C Haskell ) ],
);
# $pjf can introduce themselves.
$pjf->say_hello;
$pjf->praise_languages;
print "\n----\n\n";
# So can $jarich
$jarich->say_hello;
$jarich->praise_languages;
Это приводит к следующему выводу:
Hello, my name is Paul Fenwick
I enjoy programming in: Perl C JavaScript
----
Hello, my name is Jacinta Richardson
I enjoy programming in: Perl C Haskell
Если я хочу, у меня может быть столько объектов Хакера, сколько мне нравится, но существует все еще только один класс Хакера, который описывает, как работают все они.
Всего наилучшего,
Paul
Класс является типом (как "внедорожник"). Объект является экземпляром класса ("внедорожник David").
Мудрый Perl:
package
- спецификация. Ряд поведений и данных главным образом для помощи тем поведениям. Теперь, hashref мог бы содержать ссылку кода. В большинстве случаев это - поведение. Но единственный способ, которым объект мог использовать то определенное поведение, для которого можно быть указан некоторым наследованным поведением класса (или смешан в), который ожидает, что мог бы быть coderef, находящийся в том местоположении, и вызвать его.
Другим способом думать о нем является класс, проект того, как будет создан объект.
Вы - объект класса Человек
(Классы в Perl являются модулями с некоторыми специальными качествами, необходимо лучше сначала понять только общий случай).
Я не вижу, что люди используют термины тот же путь на других языках. Это может быть одной причиной вопроса. Я думаю, возможно, что пользователи PHP говорят "класс", когда они должны сказать "объект", много времени?
Так или иначе, что относительно этого примера - предполагают, что необходимо было создать два различных соединения с базой данных для двух различных баз данных:
my $oracle_database_handle = DBI->connect( <oracle connection details here> );
my $mysql_database_handle = DBI->connect( <mysql connection details here> );
Вы создали бы два объекта для того, чтобы сделать две разных вещи, но они - оба тот же вид вещи - соединения с базой данных DBI.