Проигнорируйте Python несколько возвращаемое значение

NSArray *assorted = [@"1 2 3 9 ; : 구 , 결 A B C Z ! á" componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSArray *sorted = [assorted sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    /* NSOrderedAscending, NSOrderedSame, NSOrderedDescending */
    BOOL isPunct1 = [[NSCharacterSet punctuationCharacterSet] characterIsMember:[(NSString*)obj1 characterAtIndex:0]];
    BOOL isPunct2 = [[NSCharacterSet punctuationCharacterSet] characterIsMember:[(NSString*)obj2 characterAtIndex:0]];
    if (isPunct1 && !isPunct2) {
        return NSOrderedAscending;
    } else if (!isPunct1 && isPunct2) {
        return NSOrderedDescending;
    }
    return [(NSString*)obj1 compare:obj2 options:NSDiacriticInsensitiveSearch|NSCaseInsensitiveSearch|NSNumericSearch]|;         
}];
251
задан Mat 10 January 2009 в 22:12
поделиться

6 ответов

Одно общее соглашение состоит в том, чтобы использовать "_" в качестве имени переменной для элементов кортежа, который Вы хотите проигнорировать. Например:

def f():
    return 1, 2, 3

_, _, x = f()
216
ответ дан Brian Clapper 4 November 2019 в 12:25
поделиться

Можно использовать x = func()[0] для возврата первого значения, x = func()[1] для возврата второго, и так далее.

, Если Вы хотите получить несколько значений за один раз, используйте что-то как x, y = func()[2:4].

544
ответ дан endolith 4 November 2019 в 12:25
поделиться

При использовании Python 3 Вы можете Вы использовать звезду, прежде чем переменная (на левой стороне присвоения), чтобы иметь его будет списком в распаковке.

# Example 1: a is 1 and b is [2, 3]

a, *b = [1, 2, 3]

# Example 2: a is 1, b is [2, 3], and c is 4

a, *b, c = [1, 2, 3, 4]

# Example 3: b is [1, 2] and c is 3

*b, c = [1, 2, 3]       

# Example 4: a is 1 and b is []

a, *b = [1]
82
ответ дан Joe 4 November 2019 в 12:25
поделиться

Помните при возврате больше чем одного объекта Вы действительно возвращаете кортеж. Таким образом, можно сделать вещи как это:

def func():
    return 1, 2

print func()[0] # prints 1
print func()[1] # prints 2
18
ответ дан endolith 4 November 2019 в 12:25
поделиться

Это походит на лучший выбор мне:

val1, val2, ignored1, ignored2 = some_function()

Это не загадочно или ужасно (как func () [индекс] метод) и ясно формулирует Вашу цель.

4
ответ дан kmelvn 4 November 2019 в 12:25
поделиться

Три простых варианта.

Очевидный

x, _ = func()

x, junk = func()

Отвратительный

x = func()[0]

И существуют способы сделать это с декоратором.

def val0( aFunc ):
    def pick0( *args, **kw ):
        return aFunc(*args,**kw)[0]
    return pick0

func0= val0(func)
15
ответ дан S.Lott 4 November 2019 в 12:25
поделиться
Другие вопросы по тегам:

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