需要Python中的元组帮助

1 投票
4 回答
1311 浏览
提问于 2025-04-16 03:56

当我打印这个元组 (u'1S²') 时,我得到的输出是 1S²

但是,当我打印这个元组 (u'1S²',u'2S¹') 时,我得到的输出是 (u'1S\xb2', u'2S\xb9')

这是为什么呢?我该怎么处理这个问题呢?
另外,我怎么才能知道元组里有多少个项目呢?

4 个回答

1

(u'1S²') 不是一个元组。(u'1S²',) 是一个包含 u'1S²' 的元组。len((u'1S²',)) 会返回这个元组的长度,也就是 1。

另外,在打印变量时,要注意有两种输出方式:

  • 一种是对程序员友好的对象字符串表示:也就是 repr(the_object)
  • 另一种是对象的文本表示,主要适用于字符串

如果第二种表示不可用,就会使用第一种。和字符串不同,元组没有文本表示,因此会使用对程序员友好的表示来展示元组及其内容。

2

你用的是什么平台和Python版本呢?我没有遇到你说的情况。我在使用Python 2.6时,总是能看到 \x 这样的转义序列:

Python 2.6.5 (r265:79063, Apr 26 2010, 10:14:53)
>>> (u'1S²')
u'1S\xb2'
>>> (u'1S²',)
(u'1S\xb2',)
>>> (u'1S²',u'1S¹')
(u'1S\xb2', u'1S\xb9')

顺便提一下,(u'1S²') 其实不是一个元组,它只是一个带括号的字符串。如果你想创建一个只有一个元素的元组,后面需要加个逗号:(u'1S²',)

至于元素的数量,可以用 len 来获取:

>>> len((u'1S²',u'1S¹'))
2
4

表达式 (u'1S²') 其实不是一个 元组,而是一个 unicode 值。一个一元组在Python中应该这样写:(u'1S²',)

print value 这个语句实际上是打印 str(value) 的内容。如果你想输出多个 unicode 字符串,可以用类似下面的方式:

print u' '.join((u'1S²',u'2S¹'))

不过,可能会遇到字符编码的问题。如果你知道你的控制台编码,可以手动把 unicode 值编码成 str

ENCODING = 'utf-8'
print u' '.join((u'1S²',u'2S¹')).encode(ENCODING)

要获取元组、列表、字符串和其他序列中的元素数量,可以使用 len 函数。

撰写回答