撇号和列表的错误

时间:2018-01-13 13:05:14

标签: python arrays python-3.x list dictionary

我试图将括号插入列表的开头和结尾,这两个列表是通过.extend()放在一起的,所以它的打印方式如下:('dog','cat','mouse')('pig, 'cow', 'sheep')。但是,我得到的输出是'dog', 'cat', 'mouse', 'pig', 'cow', 'sheep'。虽然您可以通过多种方式插入括号 - "("chr(40)等 - 但明显的缺陷是括号输出引号。

.join我理解可以用于整个列表。但是,我还没有找到一种方法将它用于一个项目 - 这种方式存在吗?

我的代码如下所示:

all_animals= []
house_animals= ['dog','cat','mouse']
farm_animals= ['pig', 'cow', 'sheep']
all_animals.extend(house_animals)
all_animals.extend(farm_animals)
print(str(all_animals)[1:-1])

编辑

以类似的方式,如果词典具有撇号(')[忍受我:它到达列表]输出会受到影响,因为它会在引号中打印该特定单词( "")而不是正常的撇号。示例:living_beings = {"Reptile":"Snake's","mammal":"whale", "Other":"bird"}如果您使用以下代码(我需要):

new= []
for i in living_beings:
    r=living_beings[i]
    new.append(r)
然后输出的是"蛇",'鲸鱼'鸟' (注意第一个和其他输出之间的差异)。所以我的问题是:如何阻止撇号影响输出。

3 个答案:

答案 0 :(得分:3)

您可以将列表转换为元组,并在打印前将它们放入列表中:

house_animals = ['dog','cat','mouse']
farm_animals = ['pig', 'cow', 'sheep']
all_animals = [tuple(house_animals), tuple(farm_animals)]

print(''.join(str(x) for x in all_animals))

输出:

('dog', 'cat', 'mouse')('pig', 'cow', 'sheep')

使用append

更接近您的方法的替代解决方案
all_animals= []
house_animals= ['dog','cat','mouse']
farm_animals= ['pig', 'cow', 'sheep']
all_animals.append(house_animals)
all_animals.append(farm_animals)
print(''.join(str(tuple(x)) for x in all_animals))

输出:

('dog', 'cat', 'mouse')('pig', 'cow', 'sheep')

修改

这就是Python代表字符串的方式:

>>> "snake's"
"snake's"
>>> "whale"
'whale'

它与字典或列表无关。

对于你的例子:

living_beings= {"Reptile":"Snake's","mammal":"whale", "Other":"bird"} 
new= []
for i in living_beings:
    r=living_beings[i]
    new.append(r)

您可以格式化字符串以一起删除引号:

print('[{}]'.format(', '.join(new)))

[Snake's, whale, bird]

答案 1 :(得分:1)

首先考虑将farm / house_animals添加为all_animals = [] all_animals.append(house_animals) all_animals.append(farm_animals) 而不是单独添加每只动物:

print(''.join(['{0}'.format(tuple(animal)) for animal in all_animals]))

然后您要查找的print语句如下所示:

#include <iostream>
using namespace std;
int main(void) {
    int myarray[7] = {6,5,2,6,7,8,6};
    int value;
    cin >> value;
    bool not_found = true;
    for(int i = 0; i < 7; ++i) {
        if(myarray[i] == value) {
            cout << "Found value " << value << " at position " << i << "\n";
            not_found = false;
        }
    }
    if(not_found)
        cout << "Not found\n";
    return 0;
}

答案 2 :(得分:0)

另一种方法可以是:

"".join(
     [str(tuple(house_animals)), str(tuple(farm_animals))]
)

输出:

('dog', 'cat', 'mouse')('pig', 'cow', 'sheep')