Re: How to generate k+1 length strings from a list of k length strings?
Try this:
def k2k1(string1, string2):
for c in string1:
string2 = string2.replace(c,"",1)
if len(string2) == 1:
string1 += string2
return string1
print k2k1("abcd", "ebcd")
--
http://mail.python.org/mailman/listinfo/python-list
Re: How to generate k+1 length strings from a list of k length strings?
actually, minor fix:
MTD wrote:
> Try this:
>
> def k2k1(string1, string2):
> for c in string1:
> string2 = string2.replace(c,"",1)
>
> if len(string2) == 1:
> string1 += string2
else:
string1 = ""
>
> return string1
>
> print k2k1("abcd", "ebcd")
--
http://mail.python.org/mailman/listinfo/python-list
Re: How to generate k+1 length strings from a list of k length strings?
So yeah, just to put it all together, try this. From your two Ks, it
either returns K+1 if it can or an empty string.
def k2k1(string1, string2):
for c in string1:
string2 = string2.replace(c,"",1)
if len(string2) == 1:
string1 += string2
else:
string1 = ""
return string1
Testing:
print k2k1("abcdadd", "abceadd")
gives:
abcdadde
--
http://mail.python.org/mailman/listinfo/python-list
Re: How to generate k+1 length strings from a list of k length strings?
Jon Clements wrote: > Are you asking the question, "Which pairs of strings have one character > different in each?", or "Which pairs of strings have a substring of > len(string) - 1 in common?". > > Jon. I imagine it's the former because the latter is trivially easy, I mean _really_ trivially easy. -- http://mail.python.org/mailman/listinfo/python-list
Re: How to link foreign keys & primary keys using python?
Your post is confusing. Here is my advice: investigate the use of
dictionaries. Dictionaries can allow you to define data in the form {
key:data }, e.g.
{ area_code : area_data }
{ (area_code,school_code) : school_data }
{ (school_code,student_code) : student_data }
--
http://mail.python.org/mailman/listinfo/python-list
Searching and manipulating lists of tuples
Hello,
I'm wondering if there's a quick way of resolving this problem.
In a program, I have a list of tuples of form (str,int), where int is a
count of how often str occurs
e.g. L = [ ("X",1),("Y",2)] would mean "X" occurs once and "Y" occurs
twice
If I am given a string, I want to search L to see if it occurs already.
If it does, I find the corresponding tuple and increment the integer
part. If not, I append the new element with int = 1.
e.g.
algorithm(L, "X") would produce output L = [("X",2),("Y",2)]
algorithm(L,"Z") would produce L = [("X",1),("Y",2),("Z",1)]
I tried to create an algorithm of the following form:
>>> def algorith(list,str):
... flag = True
... for l in list:
... if l[0] == str:
... l[1] += 1
... flag = False
... if flag:
... list.append((str,1))
...
But:
>>> algorith(L,"X")
gives:
Traceback (most recent call last):
File "", line 1, in ?
File "", line 5, in algorith
TypeError: object does not support item assignment
So clearly that doesn't work... any ideas?
--
http://mail.python.org/mailman/listinfo/python-list
Re: Searching and manipulating lists of tuples
> Yes, use the proper tool for the job. Tuples are immutable (they are > read-only once created). Instead use a dictionary. They key would be > your string, the value would be the count. Wow, I really should have thought of that! Thanks. -- http://mail.python.org/mailman/listinfo/python-list
Re: a string problem
> When i specify i only want to print the lines that contains "string" ie > the first line and not the others. If i use re module, how to compile > the expression to do this? I tried the re module and using simple > search() and everytime it gives me all the 3 lines that have "string" > in it, whereas i only need line 1. That's because all three lines DO include the substring "string" -- http://mail.python.org/mailman/listinfo/python-list
Re: Extracting values from text file
list.txt is a file that contains the following lines:
Apples 34
Bananas 10
Oranges 56
>>> file = open("list.txt","r")
>>> mystring = file.read()
>>> mystring
'Apples 34 \nBananas 10\nOranges 56 '
>>> mylist = mystring.split('\n')
>>> mylist
['Apples 34 ', 'Bananas 10', 'Oranges 56 ']
>>> mydict = {}
>>> for el in mylist:
... l = el.split()
... mydict[l[0]] = l[1]
...
>>> mydict
{'Apples': '34', 'Oranges': '56', 'Bananas': '10'}
>>> mydict["Apples"]
'34'
>>> mydict["Oranges"]
'56'
--
http://mail.python.org/mailman/listinfo/python-list
Re: Extracting values from text file
P.S.
>>> file.close()
MTD wrote:
> list.txt is a file that contains the following lines:
> Apples 34
> Bananas 10
> Oranges 56
>
> >>> file = open("list.txt","r")
> >>> mystring = file.read()
> >>> mystring
> 'Apples 34 \nBananas 10\nOranges 56 '
> >>> mylist = mystring.split('\n')
> >>> mylist
> ['Apples 34 ', 'Bananas 10', 'Oranges 56 ']
> >>> mydict = {}
> >>> for el in mylist:
> ... l = el.split()
> ... mydict[l[0]] = l[1]
> ...
> >>> mydict
> {'Apples': '34', 'Oranges': '56', 'Bananas': '10'}
> >>> mydict["Apples"]
> '34'
> >>> mydict["Oranges"]
> '56'
--
http://mail.python.org/mailman/listinfo/python-list
Re: How to truncate/round-off decimal numbers?
> >>> a = 2 > >>> b = 3 > >>> round(a*1.0 / b,2) > 0.67004 > > Inspite of specifying 2 in 2nd attribute of round, it outputs all the > digits after decimal. This is because of floating point inaccuracy. The system cannot accurately represent some integers, however it does its best to approximate them. Notice this: >>> x = 2.0/3 >>> x 0.3 >>> round(x,2) 0.67004 >>> s = str(round(x,2)) >>> s '0.67' -- http://mail.python.org/mailman/listinfo/python-list
Re: How to truncate/round-off decimal numbers?
> The system cannot > accurately represent some integers, Er, I meant FLOATS. Doh. Anyway, just to underline the example: >>> x 0.3 >>> s = str(round(x,2)) >>> s '0.67' >>> f = float(s) >>> f 0.67004 >>> f == round(x,2) True -- http://mail.python.org/mailman/listinfo/python-list
Iteration over recursion?
Hello all, I've been messing about for fun creating a trial division factorizing function and I'm naturally interested in optimising it as much as possible. I've been told that iteration in python is generally more time-efficient than recursion. Is that true? Here is my algorithm as it stands. Any suggestions appreciated! from math import * def factorize(x): """ Return factors of x """ factors = [] lim = int(sqrt(x)) y = divmod(x,2) if y[1] == 0: # x is even factors = factors + [2] + factorize(y[0]) else: # x is odd i = 3 while i <= lim: y = divmod(x,i) if y[1] == 0: factors = factors + [i] + factorize(y[0]) i = lim+1 else: i += 2 if factors == []: # necessary step for correct recursion factors = [x] return factors -- http://mail.python.org/mailman/listinfo/python-list
Re: Iteration over recursion?
Thanks a lot! More food for thought! -- http://mail.python.org/mailman/listinfo/python-list
Re: Iteration over recursion?
I've been testing my recursive function against your iterative function, and yours is generally a quite steady 50% faster on factorizing 2**n +/- 1 for 0 < n < 60. I think that, for a challenge, I'll try to make a recursive function that matche or beats the iterative function -- it's worth the experiment! Cheers, MTD -- http://mail.python.org/mailman/listinfo/python-list
Re: style question
Hari Sekhon wrote: > Is it better to do: > > message = """This is line1. > This is line2 > This is line3\n""" > > or > > message = "This is line1.\n > message = message + "This is line2\n" > message = message + "This is line3\n" Is there any reason you can't do it in one line? message = "This is line1.\nThis is line2.\nThis is line3.\n" -- http://mail.python.org/mailman/listinfo/python-list
Re: efficiency question
For the sake of comparison:
>>> def cod(x):
... tupple1 = ("abc", "def", "xyz")
... tupple2 = ("pqr", "tuv", "123")
... if x in tupple1:
... doStuff()
... elif x in tupple2:
... doOtherStuff()
...
>>> dis.dis(cod)
2 0 LOAD_CONST 7 (('abc', 'def', 'xyz'))
3 STORE_FAST 2 (tupple1)
3 6 LOAD_CONST 8 (('pqr', 'tuv', '123'))
9 STORE_FAST 1 (tupple2)
4 12 LOAD_FAST0 (x)
15 LOAD_FAST2 (tupple1)
18 COMPARE_OP 6 (in)
21 JUMP_IF_FALSE 11 (to 35)
24 POP_TOP
5 25 LOAD_GLOBAL 3 (doStuff)
28 CALL_FUNCTION0
31 POP_TOP
32 JUMP_FORWARD25 (to 60)
>> 35 POP_TOP
6 36 LOAD_FAST0 (x)
39 LOAD_FAST1 (tupple2)
42 COMPARE_OP 6 (in)
45 JUMP_IF_FALSE 11 (to 59)
48 POP_TOP
7 49 LOAD_GLOBAL 4 (doOtherStuff)
52 CALL_FUNCTION0
55 POP_TOP
56 JUMP_FORWARD 1 (to 60)
>> 59 POP_TOP
>> 60 LOAD_CONST 0 (None)
63 RETURN_VALUE
--
http://mail.python.org/mailman/listinfo/python-list
