我正在经历一个基本的理解。我有这个
words = set('zbcdedg')
first_letters = set()
然后我设置了一套理解
first_letters = {w for w in words}
然而,这个做同样的伎俩
first_letters = {w[0] for w in words}
2之间有什么区别?为什么使用后者而不是第一个,反之亦然?
答案 0 :(得分:3)
w[0][0][0][0][0]...
是单字符字符串。单字符串中的第一个字符恰好等于字符串。如果你愿意,你可以w
,它仍然是相同的。使用最短,最易读的版本:在这种情况下只需CREATE TABLE #persons
(
Number INT
,FirstName VARCHAR(10)
,Street VARCHAR(50)
)
INSERT #persons
VALUES
(1, 'David', 'Long Avenue'),
(2, 'Bob', 'Short Avenue'),
(3, 'Peter', 'Middle Avenue'),
(1, 'David', '5th Floor'),
(3, 'Peter', '1st Floor')
--This is the code you really want, I just needed the rest to test it and make sure it worked
SELECT DISTINCT
z.Number
,z.FirstName
,(SELECT p.Street FROM #persons p where p.Street LIKE '%Avenue%' AND p.Number = z.Number)
,(SELECT p.Street FROM #persons p where p.Street LIKE '%Floor%' AND p.Number = z.Number)
FROM #persons z
DROP TABLE #persons
。