打印结果不带方括号

时间:2018-12-23 12:54:36

标签: python

当我在Python中创建数组列表并打印出第一个索引的结果时,为什么还要打印方括号?

    people = [
    ["Fredrick", 23],
    ["Lorenzo", 13],
    ["Francesco", 13],
    ["Giovanna", 9]
]

print(f"{people[0]}")
  

输出:['Fredrick',23]

3 个答案:

答案 0 :(得分:1)

您创建了people,它是一个列表列表。然后,您引用f字符串f"{people[0]}"。当您引用它时,表达式people[0]会被求值并被发现是列表["Fredrick", 23]。然后将其转换为字符串-请记住,这是一个f字符串。根据Python标准,Fredrick周围的双引号将转换为单引号,其中单引号或双引号可用于表示字符串,但它们可替换为字符串中的字符串。 Python希望在需要表示时在整个字符串周围加上双引号,因此要替换引号的类型,请使用单引号。所以最后一个f字符串是

"['Fredrick', 23]"

请记住,字符串中的内容是people中列表的表示。 Python添加了括号,因此每个人都知道这确实是一个列表。 Python可以做不同的事情,但这使列表的性质变得明确,the Zen of Python中的第二条规则是

  

显式优于隐式。

因此显示了方括号。如果您不希望使用括号,则有几种方法可以将其卸下。最简单的打印f字符串而不用括号的方法可能是

print(f"{people[0]}"[1:-1])

可打印

'Fredrick', 23

该代码将打印字符串,但会删除括号中的第一个和最后一个字符。如果您不了解Python's slice notation,则应该对其进行研究-这是Python在字符串处理方面的优势之一。

答案 1 :(得分:1)

您定义了一个以数组为元素的数组。这就是为什么访问人数组的第一个索引时会得到数组['Fredrick',23]的原因。这等效于访问数组的第一项

>> array = [10, 20, 30]
>> print array[0]
>> 10

在您的情况下,第一个元素是数组:

>> ['Fredrick', 23]

另一种方法可能是:

# map is another (more appropriate) 
# data structure to store this data. 
people = {
    'Fredrick': 23,
    'Lorenzo': 13,
    'Francesco': 13,
    'Giovanna': 9
}

for name, age in people.items():
    # iterate through all map items
    # and print out each person's name and age.
    # Note: you need to convert the age from int to string
    # in order to concatenate it.
    print name + ", " + str(people[name])

答案 2 :(得分:0)

let non_nan_floats: Vec<NotNan<f32>> = unsafe { mem::transmute(nets) };

创建一个列表列表,people = [ ["Fredrick", 23], ["Lorenzo", 13], ["Francesco", 13], ["Giovanna", 9] ] 给出第一个值-列表people[0]。打印列表python(默认情况下)时,也要打印括号。