Lastor already said what I was going to point out so I am not going to repeat that. I'll just add some other things.

I tried timing your solution with a bunch of other solutions I came up with. Among these the one with best time-memory combination should be the function `mysort3` as it gave me best timing in nearly all cases. I am still looking about [proper timing][1] in Python. You can try putting in different test cases in the function `tests` to test the timing for yourself. 

    def mysort(words):
        mylist1 = sorted([i for i in words if i[:1] == "s"])
        mylist2 = sorted([i for i in words if i[:1] != "s"])
        list = mylist1 + mylist2
        return list
    
    def mysort3(words):
        ans = []
        p = ans.append
        q = words.remove
        words.sort()
        for i in words[:]:
            if i[0] == 's':
                p(i)
                q(i)
        return ans + words
    
    def mysort4(words):
        ans1 = []
        ans2 = []
        p = ans1.append
        q = ans2.append
        for i in words:
            if i[0] == 's':
                p(i)
            else:
                q(i)
        ans1.sort()
        ans2.sort()
        return ans1 + ans2
    
    def mysort6(words):
        return ( sorted([i for i in words if i[:1] == "s"]) +
                  sorted([i for i in words if i[:1] != "s"])
                 )
    
    if __name__ == "__main__":
        from timeit import Timer
        def test(f):
            f(['a','b','c','abcd','s','se', 'ee', 'as'])
    
        print Timer(lambda: test(mysort)).timeit(number = 10000)
        print Timer(lambda: test(mysort3)).timeit(number = 10000)
        print Timer(lambda: test(mysort4)).timeit(number = 10000)
        print Timer(lambda: test(mysort6)).timeit(number = 10000)


  [1]: https://codereview.stackexchange.com/questions/28373/is-this-the-proper-way-of-doing-timing-analysis-of-many-test-cases-in-python-or