能否在python中将字符串和数字作为单个条目附加到列表中?

能否在python中将字符串和数字作为单个条目附加到列表中?,python,string,list,integer,append,Python,String,List,Integer,Append,在Python3中,是否有一种方法可以将字符串和数字作为单个条目附加到列表中。 例如,如果我有一个类名列表,并且希望能够按字母顺序对列表进行排序,我会使用: classNames = [] classNames.sort() print(classNames) 一旦附加了名称,就会产生如下结果: ["Adam", "Ben", "Charlotte"] 但如果我想为这样的测试分配分数: ["Adam" 12/15, "Ben" 9/15, "Charlotte" 14/15] 这可能吗?我

在Python3中,是否有一种方法可以将字符串和数字作为单个条目附加到列表中。 例如,如果我有一个类名列表,并且希望能够按字母顺序对列表进行排序,我会使用:

classNames = []
classNames.sort()
print(classNames)
一旦附加了名称,就会产生如下结果:

["Adam", "Ben", "Charlotte"]
但如果我想为这样的测试分配分数:

["Adam" 12/15, "Ben" 9/15, "Charlotte" 14/15]

这可能吗?我可以使用列表还是必须使用其他更复杂的语法?

您可以使用
元组:

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)))
您也可以先查看
列表
,然后使用
命令

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
业务。

有一种方法,因此您可以这样构造数据:

 [("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)

列表列表。或者元组列表。
12/15
可以正常工作。当你想要原始分数时,你只需要乘以15。我不知道为什么这都是一个块文本。抱歉,如果这让人难以理解,我的代码实际上有单独的行。
9/15
是分数,而不是日期。如果需要,你可以使用存储有理数仍然会给你不期望的输出9/15==0;12/15 === 0 ; 14/15===0原始帖子确实指定了Python 3。好了,现在它基本上是正确的。。。删除了我的否决票:)(事实上它现在是一个否决票:))我不认为有任何理由将最高分数存储多次。