Надо удалить слэши и то, что находится между ними.Уточните, что именно вы хотите получить из строки
/home/user/develop/user/project/protatypes/Hatredcopter.mp3
>>> filename='/home/user/develop/user/project/protatypes/Hatredcopter.mp3'
>>> if '/' in filename:
filename=filename[filename.rindex('/')+1:]
>>> filename
'Hatredcopter.mp3'
>>> import os
>>> filename='/home/user/develop/user/project/protatypes/Hatredcopter.mp3'
>>> os.path.split(filename)
('/home/user/develop/user/project/protatypes', 'Hatredcopter.mp3')
>>> Dictionary1 = {0: 'A', 1: 'B', 2: 'C',}
>>> Dictionary2 = {0: 'A', 1: 'B', 2: 'C',}
>>> max_key=max(Dictionary1.iterkeys())
>>> {k1+k2*max_key:'%s%s'%(v2,v1) for k1,v1 in Dictionary1.iteritems() for k2,v2 in Dictionary2.iteritems()}
{0: 'AA', 1: 'AB', 2: 'AC', 3: 'BB', 4: 'BC', 5: 'CB', 6: 'CC'}
if coord1 + o > 7 or coord2 + o > 7 or coord1 + d > 7 or coord2 + d > 7 or coord1 + o < -1 or coord2 + o < -1 or coord1 + d < -1 or coord2 + d < -1:
continue
else:
...
if 0<=coord1 + o<=7 and 0<=coord2 + d<=7:
print(doska[coord1 + o][coord2 + d])
if 0<=coord1 + d<=7 and 0<=coord2 + o<=7:
print(doska[coord1 + d][coord2 + o])
i = 0
...
class Pendulum(object):
def __init__(self):
...
self.root.after(0, self.animation, i)
def animation(self, i):
i = i # полагаю, i всегда равно 0
i = 0
...
class Pendulum(object):
def __init__(self):
...
self.root.after(0, self.animation)
def animation(self):
global i
Функция возвращающая список анаграмм из заданного словаРекомендую присмотреться к модулю itertools, в частности, функции permutations. Примерный код:
import itertools
def anagrams(word):
for permutation in itertools.permutations(word):
yield ''.join(permutation)
for word in anagrams('car'):
print(word)
car
cra
acr
arc
rca
rac
>>> for word in anagrams('rar'):
print word
rar
rra
arr
arr
rra
rar
Функция сравнивающая два списка и возвращающая совпаденияЕсли я правильно понял, вы держите в памяти списки анаграмм и словарных слов и ищете (линейным поиском) их пересечение. Это, на мой взгляд, не вполне эффективно. Я бы поступил так:
words=['car','arc','cat','map','toster']
wordset=set(words)
for word in anagrams('car'):
if word in wordset:
print ("word %s matched vocabulary" % word)
Вводим словоВы можете с самого начала для каждого слова из словаря запомнить его 'отсортированный' вариант:
Из введённого слова делаем анаграммы
words=['car','arc','cat','map','toster']
sortedwordset=set(''.join(sorted(w)) for w in words)
>>> sortedwordset
set(['acr', 'eorstt', 'amp', 'act'])
Тогда для каждого введенного слова можно проверить, имеет ли смысл составлять анаграммы:if ''.join(sorted(word)) in sortedwordset:
#continue with anagrams
def sorted_string(s):
return ''.join(sorted(s))
words=['car','arc','cat','map','toster']
d={}
for word in words:
sorted_word=sorted_string(word)
if sorted_word in d:
d[sorted_word].append(word)
else:
d[sorted_word]=[word]
>>> d
{'acr': ['car', 'arc'], 'eorstt': ['toster'], 'amp': ['map'], 'act': ['cat']}
>>> d.get(sorted_string('car'),[])
['car', 'arc']
>>> d.get(sorted_string('cat'),[])
['cat']
>>> d.get(sorted_string('perkele'),[])
[]
for line in f:
read = f.readline()
split = read.split()
for line in f:
split = line.split()
Нужно выделить все подсписки, которые подходят под [1,2,*] без перебора списка.Если вы хотите выбрать все элементы первого уровня вложенности ("подсписки"), удовлетворяющие условию, без рассмотрения каждого из них (без перебора), то никак. В случае, если список a большой, вы можете рассматривать каждый элемент при добавлении его в список a и, в случае выполнения условия, добавлять его (или его индекс) в другой список/множество, хранящий/хранящее совпадения. Общая "сложность" будет такой же, но она, при соответствующей организации кода, будет "размазана" во времени, что иногда может быть предпочтительно. Но в таком случае паттерн должен быть известен заранее.
from selenium import webdriver
url='https://vk.com/kostya__wolf?z=photo107790602_343297825%2Falbum107790602_00%2Frev'
xpath='//a[@id="pv_open_original"]'
browser = webdriver.Firefox()
browser.get(url)
print browser.find_element_by_xpath(xpath).get_attribute('href')
browser.quit()
import requests
import json
import lxml.html
url='https://vk.com/kostya__wolf?z=photo107790602_343297825%2Falbum107790602_00'
r=requests.get(url)
doc=lxml.html.fromstring(r.text)
search_string=url[url.find('photo'):url.find('%2F')]
xpath='//a[contains(@href, "%s")]' % search_string
src=doc.xpath(xpath)[0].get('onclick')
d = json.loads(src[src.find('{'):src.find('}}')+len('}}')])
src=d['temp']['base']+d['temp']['z_'][0]+'.jpg'
print src
g.go('...')
имя переменной g не объявлено, добавьте перед этой строкой g=grab.Grab()u = urllib.urlopen(src)
имя переменной src не объявлено.import urllib
import grab
import json
g=grab.Grab()
url='https://vk.com/kostya__wolf?z=photo107790602_343297825%2Falbum107790602_00'
search_string=url[url.find('photo'):url.find('%2F')]
xpath='//a[contains(@href, "%s")]' % search_string
g.go(url)
src=g.doc.select(xpath).attr('onclick')
d = json.loads(src[src.find('{'):src.find('}}')+len('}}')])
src=d['temp']['base']+d['temp']['z_'][0]+'.jpg'
urllib.urlretrieve(src,'bibit.jpg')
from selenium import webdriver
import time
browser = webdriver.Firefox()
url='http://vk.com/go_in_zp?z=photo-50824015_344878304%2Falbum-50824015_00%2Frev'
browser.get(url)
time.sleep(5) # this is bad
img=browser.find_element_by_xpath('//a[@id="pv_photo"]/img')
print img.get_attribute('src')
browser.quit()
http://cs624016.vk.me/v624016533/a226/owG51bJm59o.jpg
import requests
from lxml.html import fromstring
url='http://vk.com/go_in_zp?z=photo-50824015_344878304%2Falbum-50824015_00%2Frev'
search_string=url[url.find('photo-')+len('photo-'):url.find('%2F')]
r=requests.get(url)
doc=fromstring(r.text)
xpath='//a[contains(@onclick, "%s")]/img' % search_string
print doc.xpath(xpath)[0].attrib['src']
import requests
url='https://pp.vk.me/c540104/c624218/v624218602/3321/uYVa4FQv_q0.jpg'
filename='toster.jpg'
response=requests.get(url)
if response.status_code==200:
with open(filename,'wb') as imgfile:
imgfile.write(response.content)
_flag=False
for _list in (clubs,diamonds,hearts,spades):
if first_card in _list and second_card in _list:
_flag=True
break
P.S. это нужно для функции, которая будет циклически проверять совпадение мастей карт.Что значит 'циклически'? Сколько ожидается циклов? Почему нельзя реализовать карты в качестве экземпляров специализированного класса или named tuple и напрямую сравнивать атрибуты?
С числами вроде разобрался - кешируется [-5, 256], но насчет строк нашел только скудные "кешируюутся короткие строки". Хотелось бы узнать более конкретно условия кеширования.В этом докладе (с 9 минуты) говорится, что, как правило, кэшируются строки длины в 1 байт и пустая строка. Думаю, это зависит от имплементации интерпретатора/VM.
Также интересно, что такое "interned strings"?В моем представлении, это и есть кэшированная строка. Есть встроенная функция intern, возвращающая интернированный (кэшированный) вариант строки. Пример:
>>> sys.version
'2.7.6r3 Stackless 3.1b3 060516 (default, Apr 11 2014, 15:44:48) [MSC v.1500 32 bit (Intel)]'
, короткие строки кэшируются автоматически:>>> s1==s2
True
>>> s1="toster"
>>> s2="toster"
>>> id(s1)==id(s2)
True
, длинные - нет:>>> s3="ticking away the moments that make up a dull day"
>>> s4="ticking away the moments that make up a dull day"
>>> s3==s4
True
>>> id(s3)==id(s4)
False
, но их можно кэшировать принудительно:>>> s5=intern("you fritter and waste the hours in an off-hand way")
>>> s6=intern("you fritter and waste the hours in an off-hand way")
>>> s5==s6
True
>>> id(s5)==id(s6)
True
>>>