1

2 つのリストを作成する関数があります。関数が 2 つのリストを として返すようにします[], []

これがコードです。これは、このように見えるリストを返します[[], []]が、それでも私が望むものではありません。

def create_xy_lst(start, length, step, up, down):
    new_list = []
    new_list.append(create_x_lst(start, length, step))
    new_list.append(create_y_lst(start, length, up, down))
    return new_list

それから私は別のアプローチを試みました。([], [])これはタプルであるを返します。

def create_xy_lst(start, length, step, up, down):

    x = (create_x_lst(start, length, step))
    y = (create_y_lst(start, length, up, down))
    return x, y

関数を返すにはどうすればよい[], []ですか?

パイソン 2.7

4

5 に答える 5

7

[], [] タプルです:

>>> [], []
([], [])

コンマは、括弧ではなく、値をタプルにします。

戻るx, yことは、複数の値を返す正しい方法です。

タプルを複数の変数にアンパックできます。

x, y = [], []

これは、関数の戻り値に対してもうまく機能します。

x, y = create_xy_lst(...)

割り当てでのアンパックは、タプルだけに限定されません。任意のシーケンスで動作します:

char1, char2, char3 = 'foo'
于 2013-10-14T20:34:33.893 に答える
3

[], []タプルです。()構文は簡単です。実演させてください。

>>> hello = 1,
>>> hello
(1,)
>>> cheese = [1,2,3], [6,7,8]
>>> cheese
([1, 2, 3], [6, 7, 8])

ご覧のとおり,、タプルを作成するのは です。

そして、次のように解凍できます。

>>> a, b = [1,2], [3,4]
>>> a
>>> [1,2]
>>> b
>>> [3,4]

したがって、あなたの関数では:

x, y = create_xy_lst(start, length, step, up, down)

タプルに複数のリストがある場合、これは巧妙なトリックでもあります (Python 3 を使用している場合)。

>>> a, *b = [2], [4,5,6], [10]
>>> a
>>> [2]
>>> b
>>> ([4,5,6], [10])

ただし、単純に one を返したい場合は、次listのようにすることができます。

return x + y
于 2013-10-14T20:36:52.607 に答える
1
def returnNumbers():
    return 1, 2

first, second = returnNumbers()
print first, second

印刷します

1 2

例に示すように、単純にタプルを返し、値をアンパックできます。

このような関数によって返されるデータのタイプを確認することもできます

print type(returnNumbers())

それは印刷されます

<type 'tuple'>
于 2013-10-14T20:42:21.520 に答える
0

あなたはタプルについて尋ねていますが、それがタプルであるべきだという考えを拒否しているので、ここに別の考えがあります。それを発電機に変えることができます。

def create_xy_lst(start, length, step, up, down):

    yield create_x_lst(start, length, step))
    yield create_y_lst(start, length, up, down))

クエリごとに 1 つのリストのみが生成されます。

val = create_xy_lst(a,b,c,d,e)
print(val.next()) #first list
print(val.next()) #second list

またはあなたはそれをループすることができます

for val in create_xy_lst(a,b,c,d,e):
    print(val)
于 2013-10-14T20:47:28.547 に答える