您可以将字符串和数字作为单个条目附加到 python 中的列表吗?
Can you append a string and a number as a single entry to a list in python?
python3 中有没有一种方法可以将字符串和数字作为单个条目附加到列表中。
例如,如果我有一个 class 名称的列表,并且希望能够按字母顺序对列表进行排序,我将使用:
classNames = []
classNames.sort()
print(classNames)
一旦附加了名称,这将产生如下内容:
["Adam", "Ben", "Charlotte"]
但是如果我想为这样的测试分配分数:
["Adam" 12/15, "Ben" 9/15, "Charlotte" 14/15]
这可能吗?我可以使用列表来完成还是必须使用其他更复杂的语法?
您可以使用 tuple
:
data = [("Adam",12/15), ("Ben",9/15), ("Charlotte",14/15)]
data.append(("new name", new_numerator/new_denominator))
或者您可以分别存储分子和分母:
data = [( "Adam",(12,15) ), ( "Ben",(9,15) ), ( "Charlotte",(14,15) )]
data.append(("new name", (new_numerator,new_denominator)))
你也可以放弃 list
而只使用 dict
:
data = {
"Adam":(12,15),
"Ben":(9,15),
"Charlotte":(14,15)
}
data["new name"] = (new_numerator,new_denominator)
编辑:
考虑到我在评论中与 @TigerhawkT3 的讨论。虽然是基于假设,但我觉得他说的很对。
如果您的分母在所有数据中都是常数,最好将它存储在某个变量中一次,并且只对每个学生正确回答的问题数量进行评分:
number_of_questions = 15
data = [( "Adam",12 ), ( "Ben",9 ), ( "Charlotte",14 )]
data.append(("new name", (new_numerator,new_denominator)))
或作为 dict
number_of_questions = 15
data = {
"Adam":12,
"Ben":9,
"Charlotte":14
}
data["new name"] = new_score
您可以插入包含所需元素的元组。
a=[]
a.append(("Test",(12,15)))
则a[0][0]
等于"Test",a[0][1][0]
等于12
,a[0][1][1]
等于15
。
在我看来,您不需要 12/15
业务。
有一个 fractions library 因此您可以像这样构建数据:
[("John", Fraction(5,12)), ("Alice", Fraction(8, 13))]
如前所述,您还可以使用命名元组:
from collections import namedtuple
from fractions import Fraction
StudentScore = namedtuple('StudentScore', ['name', 'score'])
x = StudentScore('John', Fraction(5, 12))
In [109]: x.name
Out[109]: 'John'
In [110]: x.score
Out[110]: Fraction(5, 12)
python3 中有没有一种方法可以将字符串和数字作为单个条目附加到列表中。 例如,如果我有一个 class 名称的列表,并且希望能够按字母顺序对列表进行排序,我将使用:
classNames = []
classNames.sort()
print(classNames)
一旦附加了名称,这将产生如下内容:
["Adam", "Ben", "Charlotte"]
但是如果我想为这样的测试分配分数:
["Adam" 12/15, "Ben" 9/15, "Charlotte" 14/15]
这可能吗?我可以使用列表来完成还是必须使用其他更复杂的语法?
您可以使用 tuple
:
data = [("Adam",12/15), ("Ben",9/15), ("Charlotte",14/15)]
data.append(("new name", new_numerator/new_denominator))
或者您可以分别存储分子和分母:
data = [( "Adam",(12,15) ), ( "Ben",(9,15) ), ( "Charlotte",(14,15) )]
data.append(("new name", (new_numerator,new_denominator)))
你也可以放弃 list
而只使用 dict
:
data = {
"Adam":(12,15),
"Ben":(9,15),
"Charlotte":(14,15)
}
data["new name"] = (new_numerator,new_denominator)
编辑:
考虑到我在评论中与 @TigerhawkT3 的讨论。虽然是基于假设,但我觉得他说的很对。
如果您的分母在所有数据中都是常数,最好将它存储在某个变量中一次,并且只对每个学生正确回答的问题数量进行评分:
number_of_questions = 15
data = [( "Adam",12 ), ( "Ben",9 ), ( "Charlotte",14 )]
data.append(("new name", (new_numerator,new_denominator)))
或作为 dict
number_of_questions = 15
data = {
"Adam":12,
"Ben":9,
"Charlotte":14
}
data["new name"] = new_score
您可以插入包含所需元素的元组。
a=[]
a.append(("Test",(12,15)))
则a[0][0]
等于"Test",a[0][1][0]
等于12
,a[0][1][1]
等于15
。
在我看来,您不需要 12/15
业务。
有一个 fractions library 因此您可以像这样构建数据:
[("John", Fraction(5,12)), ("Alice", Fraction(8, 13))]
如前所述,您还可以使用命名元组:
from collections import namedtuple
from fractions import Fraction
StudentScore = namedtuple('StudentScore', ['name', 'score'])
x = StudentScore('John', Fraction(5, 12))
In [109]: x.name
Out[109]: 'John'
In [110]: x.score
Out[110]: Fraction(5, 12)