* это против этого в C ++

Вы можете использовать pd.Series.isin .

Для «IN» используйте: something.isin(somewhere)

Или для «NOT IN»: ~something.isin(somewhere)

В качестве обработанного примера:

>>> df
  countries
0        US
1        UK
2   Germany
3     China
>>> countries
['UK', 'China']
>>> df.countries.isin(countries)
0    False
1     True
2    False
3     True
Name: countries, dtype: bool
>>> df[df.countries.isin(countries)]
  countries
1        UK
3     China
>>> df[~df.countries.isin(countries)]
  countries
0        US
2   Germany

30
задан DavidRR 25 February 2013 в 16:21
поделиться

3 ответа

this - это указатель, а * this - разыменованный указатель.

Если у вас есть функция, которая вернула this , это был бы указатель на текущий объект, а функция, которая вернула * this , была бы «клоном» текущего объекта. объект, размещенный в стеке - , если вы не указали возвращаемый тип метода для возврата ссылки.

Простая программа, которая показывает разницу между работой с копиями и ссылками:

#include <iostream>

class Foo
{
    public:
        Foo()
        {
            this->value = 0;
        }

        Foo get_copy()
        {
            return *this;
        }

        Foo& get_copy_as_reference()
        {
            return *this;
        }

        Foo* get_pointer()
        {
            return this;
        }

        void increment()
        {
            this->value++;
        }

        void print_value()
        {
            std::cout << this->value << std::endl;
        }

    private:
        int value;
};

int main()
{
    Foo foo;
    foo.increment();
    foo.print_value();

    foo.get_copy().increment();
    foo.print_value();

    foo.get_copy_as_reference().increment();
    foo.print_value();

    foo.get_pointer()->increment();
    foo.print_value();

    return 0;
}

Вывод:

1
1
2
3

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

60
ответ дан 27 November 2019 в 18:06
поделиться

this - указатель на экземпляр класса. * this является ссылкой на то же самое. Они различаются так же, как int * i_ptr и int & i_ref .

10
ответ дан 27 November 2019 в 18:06
поделиться

На самом деле нет никакой разницы, this-> foo () то же самое, что (* this) .foo ( ) .

-4
ответ дан 27 November 2019 в 18:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: