Py学习  »  Python

python中通过函数列出的列表

bence • 4 年前 • 464 次点击  

我试图通过python中的这个函数得到一个列表,当我运行它时,我只得到最后一个列表l。我如何编辑我的代码,使每个迭代都保存在一个公共列表中? 提前谢谢你

FB = []
while True:
    given_name = input("Hva er fornavnet ditt? ")
    if given_name == 'done':
        break
    surname = input("Hva er etternavnet ditt? ")
    age = int(input("Hvor gammel er du? "))
    gender = input("Hvilket kjønn har du? ")
    def add_data():
        L = []
        L.append(given_name)
        L.append(surname)
        L.append(age)
        L.append(gender)
        return L
    add_data()
FB.append(add_data())
print(FB)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38263
 
464 次点击  
文章 [ 2 ]  |  最新文章 4 年前
LeKhan9
Reply   •   1 楼
LeKhan9    5 年前

这是一个OOP方法。帮助消除每个属性的重复附加:

class Person():
    def __init__(self, name, surname, age, gender):
        self.name = name
        self.surname = surname
        self.age = age
        self.gender = gender

    def get_list_description(self):
        return [self.name, self.surname, self.age, self.gender]

FB = []
while True:
    given_name = raw_input("Hva er fornavnet ditt? ")
    if given_name == 'done':
        break
    surname = raw_input("Hva er etternavnet ditt? ")
    age = int(raw_input("Hvor gammel er du? "))
    gender = raw_input("Hvilket kjonn har du? ")

    p = Person(given_name, surname, age, gender)
    FB.append(p.get_list_description())

print(FB)
nillyb
Reply   •   2 楼
nillyb    5 年前

您将在循环外部附加数据,这意味着您每次在while循环内部使用 L=[] .

你也不需要额外的 add_data() 功能和简单使用内置 .append 添加列表的方法 L 到主管道 FB 名单。

您可以这样简化代码:

FB = []
while True:
    given_name = input("Hva er fornavnet ditt? ")
    if given_name == 'done':
        break
    surname = input("Hva er etternavnet ditt? ")
    age = int(input("Hvor gammel er du? "))
    gender = input("Hvilket kjønn har du? ")

    L = []
    L.append(given_name)
    L.append(surname)
    L.append(age)
    L.append(gender)

    FB.append(L)

print(FB)