如果我有一个颜色列表,如何在循环中创建数据结构
[(u'blue', ), (u'green', ), (u'black', )]
并且需要一个数据结构(可能是一个2列列表),如下所示;
(('blue', 'blue'),
('green', 'green'),
('black', 'black'))
另外,作为一个额外的,为什么(以及什么类型的变量)是我的颜色列表,由以前缀为u的项目组成,并且被包围在' &#39 ;?当我尝试执行字符串操作时,它似乎并不认识到它是字符串的一部分。数据(实际上不是颜色!)来自SQL db中列的pyodbc查询。
例如,如果我正在修改colours_list中的第一行(语法不正确)
row[2:]
print row
(u'ue', ) # output
谢谢!
答案 0 :(得分:3)
使用生成器表达式和元组解包:
>>> colors = [(u'blue', ), (u'green', ), (u'black', )]
# If you want a tuple of 2-items tuples, use `tuple()` and generator expression
>>> tuple((color, color) for color, in colors)
((u'blue', u'blue'), (u'green', u'green'), (u'black', u'black'))
# If you want a list of 2-items tuples, use list comprehension
>>> [(color, color) for color, in colors]
[(u'blue', u'blue'), (u'green', u'green'), (u'black', u'black')]
u'...'
是一个unicode字符串文字。 (见Unicode Strings)
使用str
function或unicode.encode
method,您可以将unicode对象转换为str
对象:
>>> tuple((str(color), str(color)) for color, in colors)
(('blue', 'blue'), ('green', 'green'), ('black', 'black'))
>>> tuple((color.encode(), color.encode()) for color, in colors)
(('blue', 'blue'), ('green', 'green'), ('black', 'black'))