Как получить доступ к списку элементов конкретных цифр в Python? - PullRequest
0 голосов
/ 30 апреля 2018
str1= ",".join(str(e) for e in paths)
str2= ",".join(str(e) for e in newlist)
print(str1)
print(str2) 
for j in str2:
    for i in str1:
        if (j[0]==i[0]): 
        print('number is {}'.format(i))

Привет, я создавал программу, в которой мне нужно было получить доступ к элементам списков с определенными цифрами, например, если один список [12,23,34], а другой - [13,34], я хочу получить доступ к первым элементам, т. Е. 12 цифрам то есть 1 и 2 и сравнить его с другим списком, и если встречается какая-либо одинаковая цифра, я хочу напечатать первый элемент первого списка. Как и в нашем примере, 12 и 13 имеют одинаковую цифру 1, которую я хочу напечатать 12. Я пытаюсь сделать это несколько дней, но застреваю. А также я попытался преобразовать ее в строку, а затем возникла некоторая проблема.

В приведенном выше примере я получаю напечатанные цифры следующим образом:

number is 1
number is 3
number is 3
number is ,
number is ,
number is 1
number is 4

Мне не нужна запятая, и если совпадение происходит, число должно быть напечатано, как указано в примере. Любая помощь будет принята с благодарностью.

Спасибо.

Ответы [ 4 ]

0 голосов
/ 30 апреля 2018

Я не уверен, что полностью понимаю вопрос, однако:

list1 = [13,23,34]
list2 = [24,18,91]
list1 = list(map(str,list1)) #Map the arrays of ints to arrays of strings
list2 = list(map(str,list2))

for j in list1:
    for i in list2:
        for character in j:
            if character in i:
                print(j+' matches with '+i)
                break

Распечатывает:

13 matches with 18
13 matches with 91
23 matches with 24
34 matches with 24
0 голосов
/ 30 апреля 2018

Это должно работать для вашего варианта использования

list1 = [123, 12, 32232, 1231]
list2 = [1232, 23243, 54545]

def find_intersection(list1, list2):
    list2_digits = set.union(*[get_digits(x) for x in list2])
    for num1 in list1:
        digits1 = get_digits(num1)
        for num2 in list2:
            digits2 = get_digits(num2)
            if digits1.intersection(digits2):
                print 'Found Match', num1, num2  # We found a match
                # Break here unless you want to find all possible matches

def get_digits(num):
    d = set()
    while num > 0:
        d.add(num % 10)
        num = num / 10
    return d

find_intersection(list1, list2)
0 голосов
/ 30 апреля 2018

Не будет ли легче хранить их в виде списков?
Если вы хотите сравнить только те же индексы, то:

In []:
l1 = [12,23,34]
l2 = [13,34]
for a, b in zip(l1, l2):
    if a//10 == b//10:
        print(a)

Out[]:
12

Или вы хотите проверить любой индекс:

In []:
import itertools as it

l1 = [12,23,34]
l2 = [13,34]
for a, b in it.product(l1, l2):
    if a//10 == b//10:
        print(a)

Out[]:
12
34
0 голосов
/ 30 апреля 2018

попробуйте

str1= ",".join(str(e) for e in paths)
str2= ",".join(str(e) for e in newlist)
print(str1)
print(str2) 
for j in str2:
    for i in str1:
        if (j[0]==i[0] and (i and j != ',')): 
        print('number is {}'.format(i))

выход

12,23,34
13,34
number is 1
number is 3
number is 3
number is 3
number is 3
number is 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...